Packages and workspace
We use lerna/yarn workspaces. You'll see we have in our ./packages folder numerous packages:
├── ast
├── babel
├── lcd
├── parser
├── telescope
├── test
├── types
└── utils| folder | purpose | 
|---|---|
| ast | for creating new AST functions | 
| lcd | for giving LCD clients to generated code that uses the LCD client | 
| parser | protobuf parser, and protobuf traversal | 
| telescope | the CLI, as well as the main telescope builder | 
| starship | using starship for testing things locally or in CI workflow | 
| types | types and TelescopeOptions objects | 
| utils | other utilities | 
Editing interdependent packages
Because we are using lerna/yarn workspaces, packages in the ./packages folder act as local npm modules.
If you edit a package, make sure to cd into it, and run yarn buidl, or separately, yarn build and yarn build:ts.
For example, if you edit a file in ./packages/types and you want to make sure it's up-to-date in another package, such as ./packages/ast, the changes propagate after you run these commands:
yarn build
yarn build:ts # now the types will also show up