@starbeam/core:
src/
core/
core-utils/ # does this need to be separate? (move to utils?)
debug/
reactive-core/
resource/
runtime/
lifetime/
interfaces/ # would probably no longer need to exist, interfaces can be inlined where needed
@starbeam/renderer:
unchanged
There are a lot of core packages right now.
We don't want users to have to know what to install, so we've talked about bundling them all in to one published package that users would install.
It is useful to have separate boundaries for conceptual reasons, and hard package boundaries enforce that -- at the cost of build complexity.
Perhaps we can combine all the core packages (leaving out renderers, collections), and keep boundary enforcement via this lint: https://eslint.org/docs/latest/rules/no-restricted-imports
example:
given:
this would greatly improve our dead-code-elimination as well. https://github.com/starbeamjs/starbeam/pull/149
an example of configuring the lint rule:
This would mean in order to import from other folders, we'd want to use subpath imports, described here: https://nodejs.org/api/packages.html#subpath-imports (an ESM / type=module only feature)