refactor(service-datasource): merge federation + runtime admin into one package#1513
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…ne package Consolidate `@objectstack/service-external-datasource` (federation) and `@objectstack/service-datasource-admin` (runtime UI lifecycle) into a single `@objectstack/service-datasource`. The two were always one ADR-0015 capability; they were only split because the runtime admin was once private. Now that both are open-source that reason is gone, so they become one package. The two plugins still mount independently (serve wires each in its own block) — merging the package did not couple them. Plugin runtime IDs (`com.objectstack.service-external-datasource` / `com.objectstack.service-datasource-admin`) are unchanged, so dedup matching and any persisted references keep working. - git mv preserves history for both halves. - Unified index re-exports both surfaces; single canonical `Logger`. - package.json: driver packages as optional peers, exports `.` + `./contracts`, local tsup (index + contracts entries). - Consumers updated: cli dep + serve.ts dynamic imports + .changeset/config.json. - Now is the cheapest time to do this: only the cli depended on either package. Verified: typecheck clean; 56 tests pass (federation + admin); package build (incl. dts) and cli build green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fb3d009 to
84c77fb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Merges
@objectstack/service-external-datasource(federation) and@objectstack/service-datasource-admin(runtime UI lifecycle) into a single@objectstack/service-datasource.Why
They were always one ADR-0015 capability — the split existed only because the runtime admin was once private/out-of-repo. Now that both are open-source (#1502, #1511), that reason is gone, and one package is the simpler, truer model. Now is the cheapest time: only the
clidepended on either package, so the rename's blast radius is minimal.The earlier "keep them separate" arguments (independent mounting, the open-core DI seam, audit surface) turned out not to require a package boundary — they live at the plugin-constructor / module level. The two plugins still mount independently (serve wires each in its own block); merging the package did not couple them.
How
git mvpreserves history for both halves.index.tsre-exports both surfaces; single canonicalLogger.com.objectstack.service-external-datasource/com.objectstack.service-datasource-admin), so dedup matching + persisted references keep working — only the npm package name changed.package.json: driver packages as optional peers; exports.+./contracts; local tsup (index + contracts entries).clidep,serve.tsdynamic imports,.changeset/config.json.Verification
Note for the cloud repo
clouddoesn't import these directly (it consumes the framework CLI), so no cloud change is needed. The old package names are fully retired in framework live code/config.🤖 Generated with Claude Code