Moved @tryghost/api-framework into the Ghost monorepo#28704
Conversation
refs https://github.com/TryGhost/Toolbox/issues/363 - this API framework is standalone and should be pulled out into a separate package so we can define its boundaries more clearly, and promote better testing of smaller parts
- these tests have moved from `core/` so the names are no longer relevant
- it's better suited here given this package is now the API framework
- if the API controller endpoint is a function, we early return as we expect the function to handle the response but we still ended up calculating the headers beforehand, only to be thrown away - this commit moves the header fetching code down in the flow so it's only executed when needed - this doesn't really have a big effect for us because 99% of our controllers follow the object pattern
- this file was mostly just missing tests for the other content disposition types, which are easily added - bumps coverage of this file to 100%
- this makes the code more readable and succinct
- because of how the npm scripts were set up, we were running the full Admin integration tests during the unit tests phase of CI - this commit renames the majority of `test` to `test:unit` in the package.json files, and aliases `test` to `test:unit` - special packages like Admin have no-op'd `test:unit` scripts so we don't end up running its tests
- cleaned up unused dependencies - adds missing dependencies that are used in the code - this should help us be more explicit about the dependencies a package uses
- fixes a bunch of red squiggly lines due to type issues - this in turn makes it slightly easier to read the API pipeline code
refs: #14882 - Removing bluebird specific methods in favour of the Ghost sequence method so we can remove the bluebird dependency
- this was all getting terribly behind so I've done several things: - majority of `@tryghost/*` except Lexical packages - gscan + knex-migrator to remove old `@tryghost/errors` usage - bumped lockfile
- there's a weird situation when we have mixed versions of the dependency because different libraries try to compare instances - this brings the usage up to 1.2.21 so we can fix the build for now
refs https://github.com/TryGhost/Toolbox/issues/522 - API-level response caching allows to cache responses bypassing the "pipeline" processing - The main usecase for these caches is caching GET requests for expensive Content API requests - To enable response caching add a "cache" key with a cache instance as a value, for example for posts public cache configuration can look like: ``` module.exports = { docName: 'posts', browse: { cache: postsPublicService.api.cache, options: [ ... ```
- this is being done manually instead of merging the Renovate PR because the PR bundles another bump which doesn't pass yet
- we keep ending up with multiple versions of the depedency in our tree, and it's causing problems when comparing instances - the workaround I'm implementing for now is to bump the package everywhere and set a resolution so we only have 1 shared instance - hopefully we can come up with a better method down the line
- we previously used `@stdlib/utils` instead of the child package `@stdlib/copy`, which is a lot smaller and contains our only use of the parent - this saves 140+MB of dependencies
- project: @tryghost/bookshelf-transaction-events 2.0.1 - project: @tryghost/bookshelf-include-count 2.0.1 - project: @tryghost/bookshelf-custom-query 2.0.1 - project: @tryghost/webhook-mock-receiver 2.0.1 - project: @tryghost/bookshelf-eager-load 2.0.1 - project: @tryghost/bookshelf-pagination 2.0.1 - project: @tryghost/bookshelf-collision 2.0.1 - project: @tryghost/bookshelf-has-posts 2.0.1 - project: @tryghost/email-mock-receiver 2.0.1 - project: @tryghost/prometheus-metrics 3.0.1 - project: @tryghost/bookshelf-plugins 2.0.1 - project: @tryghost/bookshelf-filter 2.0.1 - project: @tryghost/bookshelf-search 2.0.1 - project: @tryghost/http-cache-utils 2.0.1 - project: @tryghost/mw-error-handler 3.0.1 - project: @tryghost/bookshelf-order 2.0.1 - project: @tryghost/api-framework 3.0.1 - project: @tryghost/database-info 2.0.1 - project: @tryghost/domain-events 3.0.1 - project: @tryghost/elasticsearch 5.0.1 - project: @tryghost/jest-snapshot 2.0.1 - project: @tryghost/pretty-stream 2.0.1 - project: @tryghost/express-test 2.0.1 - project: @tryghost/http-stream 2.0.1 - project: @tryghost/job-manager 3.0.1 - project: @tryghost/nodemailer 2.0.1 - project: @tryghost/pretty-cli 3.0.1 - project: @tryghost/root-utils 2.0.1 - project: @tryghost/validator 2.0.1 - project: @tryghost/mw-vhost 3.0.1 - project: @tryghost/security 3.0.1 - project: @tryghost/logging 4.0.1 - project: @tryghost/metrics 3.0.1 - project: @tryghost/promise 2.0.1 - project: @tryghost/request 3.0.1 - project: @tryghost/version 2.0.1 - project: @tryghost/config 2.0.1 - project: @tryghost/errors 3.0.1 - project: @tryghost/server 2.0.1 - project: @tryghost/debug 2.0.1 - project: @tryghost/tpl 2.0.1 - project: @tryghost/zip 3.0.1
- project: @tryghost/bookshelf-transaction-events 2.0.2 - project: @tryghost/bookshelf-include-count 2.0.2 - project: @tryghost/bookshelf-custom-query 2.0.2 - project: @tryghost/webhook-mock-receiver 2.0.2 - project: @tryghost/bookshelf-eager-load 2.0.2 - project: @tryghost/bookshelf-pagination 2.0.2 - project: @tryghost/bookshelf-collision 2.0.2 - project: @tryghost/bookshelf-has-posts 2.0.2 - project: @tryghost/email-mock-receiver 2.0.2 - project: @tryghost/prometheus-metrics 3.0.2 - project: @tryghost/bookshelf-plugins 2.0.2 - project: @tryghost/bookshelf-filter 2.0.2 - project: @tryghost/bookshelf-search 2.0.2 - project: @tryghost/http-cache-utils 2.0.2 - project: @tryghost/mw-error-handler 3.0.2 - project: @tryghost/bookshelf-order 2.0.2 - project: @tryghost/api-framework 3.0.2 - project: @tryghost/database-info 2.0.2 - project: @tryghost/domain-events 3.0.2 - project: @tryghost/elasticsearch 5.0.2 - project: @tryghost/jest-snapshot 2.0.2 - project: @tryghost/pretty-stream 2.0.2 - project: @tryghost/express-test 2.0.2 - project: @tryghost/http-stream 2.0.2 - project: @tryghost/job-manager 3.0.2 - project: @tryghost/nodemailer 2.0.2 - project: @tryghost/pretty-cli 3.0.2 - project: @tryghost/root-utils 2.0.2 - project: @tryghost/validator 2.0.2 - project: @tryghost/mw-vhost 3.0.2 - project: @tryghost/security 3.0.2 - project: @tryghost/logging 4.0.2 - project: @tryghost/metrics 3.0.2 - project: @tryghost/promise 2.0.2 - project: @tryghost/request 3.0.2 - project: @tryghost/version 2.0.2 - project: @tryghost/config 2.0.2 - project: @tryghost/errors 3.0.2 - project: @tryghost/server 2.0.2 - project: @tryghost/debug 2.0.2 - project: @tryghost/tpl 2.0.2 - project: @tryghost/zip 3.0.2
- project: @tryghost/bookshelf-transaction-events 2.0.3 - project: @tryghost/bookshelf-include-count 2.0.3 - project: @tryghost/bookshelf-custom-query 2.0.3 - project: @tryghost/webhook-mock-receiver 2.0.3 - project: @tryghost/bookshelf-eager-load 2.0.3 - project: @tryghost/bookshelf-pagination 2.0.3 - project: @tryghost/bookshelf-collision 2.0.3 - project: @tryghost/bookshelf-has-posts 2.1.0 - project: @tryghost/email-mock-receiver 2.0.3 - project: @tryghost/prometheus-metrics 3.0.3 - project: @tryghost/bookshelf-plugins 2.0.3 - project: @tryghost/bookshelf-filter 2.0.3 - project: @tryghost/bookshelf-search 2.0.3 - project: @tryghost/http-cache-utils 2.0.3 - project: @tryghost/mw-error-handler 3.0.3 - project: @tryghost/bookshelf-order 2.0.3 - project: @tryghost/api-framework 3.0.3 - project: @tryghost/database-info 2.0.3 - project: @tryghost/domain-events 3.0.3 - project: @tryghost/elasticsearch 5.0.3 - project: @tryghost/jest-snapshot 2.0.3 - project: @tryghost/pretty-stream 2.0.3 - project: @tryghost/express-test 2.0.3 - project: @tryghost/http-stream 2.0.3 - project: @tryghost/job-manager 3.0.3 - project: @tryghost/nodemailer 2.0.3 - project: @tryghost/pretty-cli 3.0.3 - project: @tryghost/root-utils 2.0.3 - project: @tryghost/validator 2.0.3 - project: @tryghost/mw-vhost 3.0.3 - project: @tryghost/security 3.0.3 - project: @tryghost/logging 4.0.3 - project: @tryghost/metrics 3.0.3 - project: @tryghost/promise 2.0.3 - project: @tryghost/request 3.0.3 - project: @tryghost/version 2.0.3 - project: @tryghost/config 2.0.3 - project: @tryghost/errors 3.0.3 - project: @tryghost/server 2.0.3 - project: @tryghost/debug 2.0.3 - project: @tryghost/tpl 2.0.3 - project: @tryghost/zip 3.0.3
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ref https://linear.app/ghost/issue/PLA-12/ - migrated from eslint to oxfmt/oxlint This PR moves this repo over to oxfmt/oxlint. We are keeping the default rules and not applying the Ghost-specific rules (these will be evaluated later as a separate effort, on whether or not we want to bring them back). The idea here is to update tooling to a faster, modern tool and leverage **defaults**. The only rule we have adjusted here is single quotes.
no ref Migrated to pnpm 10.33 to match TryGhost/Ghost.
no ref - Convert every internal @tryghost/* ref in dependencies/devDependencies to workspace:*. pnpm pack rewrites this to the real version at publish time, so consumers outside the monorepo are unaffected. - Declare @tryghost/debug in prometheus-metrics (phantom import from MetricsServer.ts that only resolved under yarn's flat layout). - Declare @types/node as a direct devDep on the two TypeScript packages (errors, prometheus-metrics). These were the only packages relying on the hoisted @types/node to satisfy the shared tsconfig's types:[node]. - Delete .npmrc. link-workspace-packages and both public-hoist-pattern entries are no longer needed.
no ref
Some more pnpm optimizations:
- Move overrides and onlyBuiltDependencies from root package.json's pnpm
key into pnpm-workspace.yaml. This is where pnpm 10 recommends these
live, alongside the packages glob.
- Introduce a default catalog for three devDeps that were duplicated
across packages at identical versions:
sinon (35 packages + root)
ts-node (2 packages + root)
typescript (2 packages)
Every reference becomes "catalog:". Bumping any of these is now a
one-line change in pnpm-workspace.yaml instead of a 35-file PR.
typescript and ts-node will grow further with the ts-esm-migration,
so cataloguing them now avoids having to re-touch each manifest later.
pnpm pack continues to rewrite "catalog:" to real versions at publish
time (verified: @tryghost/api-framework pack emits "sinon": "21.1.2"),
so consumers outside the monorepo are unaffected.
…558) no ref Sweep across all package READMEs to bring install/develop/test instructions in line with the current toolchain. No code changes.
- project: @tryghost/bookshelf-transaction-events 2.1.0 - project: @tryghost/bookshelf-include-count 2.1.0 - project: @tryghost/bookshelf-custom-query 2.1.0 - project: @tryghost/webhook-mock-receiver 2.1.0 - project: @tryghost/bookshelf-eager-load 2.1.0 - project: @tryghost/bookshelf-pagination 2.1.0 - project: @tryghost/bookshelf-collision 2.1.0 - project: @tryghost/bookshelf-has-posts 2.2.0 - project: @tryghost/email-mock-receiver 2.1.0 - project: @tryghost/prometheus-metrics 3.1.0 - project: @tryghost/bookshelf-plugins 2.1.0 - project: @tryghost/bookshelf-filter 2.1.0 - project: @tryghost/bookshelf-search 2.1.0 - project: @tryghost/http-cache-utils 2.1.0 - project: @tryghost/mw-error-handler 3.1.0 - project: @tryghost/bookshelf-order 2.1.0 - project: @tryghost/api-framework 3.1.0 - project: @tryghost/database-info 2.1.0 - project: @tryghost/domain-events 3.1.0 - project: @tryghost/elasticsearch 5.1.0 - project: @tryghost/jest-snapshot 2.1.0 - project: @tryghost/pretty-stream 2.1.0 - project: @tryghost/express-test 2.1.0 - project: @tryghost/http-stream 2.1.0 - project: @tryghost/job-manager 3.1.0 - project: @tryghost/nodemailer 2.1.0 - project: @tryghost/pretty-cli 3.1.0 - project: @tryghost/root-utils 2.1.0 - project: @tryghost/validator 2.1.0 - project: @tryghost/mw-vhost 3.1.0 - project: @tryghost/security 3.1.0 - project: @tryghost/logging 4.1.0 - project: @tryghost/metrics 3.1.0 - project: @tryghost/promise 2.1.0 - project: @tryghost/request 3.1.0 - project: @tryghost/version 2.1.0 - project: @tryghost/config 2.1.0 - project: @tryghost/errors 3.1.0 - project: @tryghost/server 2.1.0 - project: @tryghost/debug 2.1.0 - project: @tryghost/tpl 2.1.0 - project: @tryghost/zip 3.1.0
ref ONC-1676 The pipeline built its cache key with `JSON.stringify(cacheKeyData, Object.keys(cacheKeyData).sort())`. The array form of the replacer is a recursive key whitelist — it is applied at every depth, not just the top level — so any key in a nested object that did not also appear as a top-level key of `cacheKeyData` was silently dropped from the serialized output. As a result, two calls whose `cacheKeyData` agreed on the top-level keys but differed inside a nested object produced the same cache key. Replaced the replacer array with a `sortKeysReplacer` function that returns each plain object with its keys sorted while leaving the values intact, so the output stays deterministic at every depth and no nested keys are lost. Added a regression test in `pipeline.test.js` that exercises two requests with identical top-level keys but different nested fields and asserts the resulting cache keys are distinct.
no ref - concurrency groups cancel stale PR runs and serialize publishes - format:check gate catches oxfmt drift before it lands - .nx/cache is restored between CI runs for cache hits on re-runs - drop redundant npm 11 install (Node 24 ships with it) - drop duplicated pnpm version pin (packageManager field drives it) - reformat 5 test files that had pre-existing oxfmt drift so the new gate is green
Every package's test script is now the same shape: "test": "NODE_ENV=testing vitest run --coverage" Three kinds of drift collapsed: - "--config ../../vitest.config.ts" flag removed (vitest auto-discovers the root vitest.config.ts from a package dir — verified behavior is identical with and without the flag) - Vestigial test:unit indirection removed from 8 packages that had test: "pnpm run test:unit" → test:unit: "vitest ..." with no other sub-targets. The indirection was left over from an aspirational unit/integration split that never happened. - prometheus-metrics keeps its test: "test:types && test:unit" compound since it has a legitimate tsc --noEmit type check alongside tests
- project: @tryghost/prometheus-metrics 3.1.1 - project: @tryghost/api-framework 3.1.1 - project: @tryghost/domain-events 3.1.1 - project: @tryghost/http-stream 2.1.1 - project: @tryghost/job-manager 3.1.1 - project: @tryghost/validator 3.0.0 - project: @tryghost/logging 4.1.1 - project: @tryghost/request 3.1.1 - project: @tryghost/server 2.1.1
- project: @tryghost/bookshelf-transaction-events 2.2.0 - project: @tryghost/bookshelf-include-count 2.2.0 - project: @tryghost/bookshelf-custom-query 2.2.0 - project: @tryghost/webhook-mock-receiver 2.2.0 - project: @tryghost/bookshelf-eager-load 2.2.0 - project: @tryghost/bookshelf-pagination 2.2.0 - project: @tryghost/bookshelf-collision 2.2.0 - project: @tryghost/bookshelf-has-posts 2.3.0 - project: @tryghost/email-mock-receiver 2.2.0 - project: @tryghost/prometheus-metrics 3.2.0 - project: @tryghost/bookshelf-plugins 2.2.0 - project: @tryghost/bookshelf-filter 2.2.0 - project: @tryghost/bookshelf-search 2.2.0 - project: @tryghost/http-cache-utils 2.2.0 - project: @tryghost/mw-error-handler 3.2.0 - project: @tryghost/bookshelf-order 2.2.0 - project: @tryghost/api-framework 3.2.0 - project: @tryghost/database-info 2.2.0 - project: @tryghost/domain-events 3.2.0 - project: @tryghost/elasticsearch 5.2.0 - project: @tryghost/jest-snapshot 2.2.0 - project: @tryghost/pretty-stream 2.2.0 - project: @tryghost/express-test 2.2.0 - project: @tryghost/http-stream 2.2.0 - project: @tryghost/job-manager 3.2.0 - project: @tryghost/nodemailer 2.2.0 - project: @tryghost/pretty-cli 3.2.0 - project: @tryghost/root-utils 2.2.0 - project: @tryghost/validator 3.1.0 - project: @tryghost/mw-vhost 3.2.0 - project: @tryghost/security 3.2.0 - project: @tryghost/logging 4.2.0 - project: @tryghost/metrics 3.2.0 - project: @tryghost/promise 2.2.0 - project: @tryghost/request 3.2.0 - project: @tryghost/version 2.2.0 - project: @tryghost/config 2.2.0 - project: @tryghost/errors 3.2.0 - project: @tryghost/server 2.2.0 - project: @tryghost/debug 2.2.0 - project: @tryghost/tpl 2.2.0 - project: @tryghost/zip 3.2.0
- project: @tryghost/bookshelf-pagination 2.2.1 - project: @tryghost/bookshelf-collision 2.2.1 - project: @tryghost/prometheus-metrics 3.2.1 - project: @tryghost/bookshelf-plugins 2.2.1 - project: @tryghost/bookshelf-filter 2.2.1 - project: @tryghost/mw-error-handler 3.2.1 - project: @tryghost/api-framework 3.2.1 - project: @tryghost/domain-events 3.2.1 - project: @tryghost/jest-snapshot 2.2.1 - project: @tryghost/express-test 2.2.1 - project: @tryghost/http-stream 2.2.1 - project: @tryghost/job-manager 3.2.1 - project: @tryghost/nodemailer 2.2.1 - project: @tryghost/validator 3.1.1 - project: @tryghost/logging 4.2.1 - project: @tryghost/request 3.2.1 - project: @tryghost/errors 3.2.1 - project: @tryghost/server 2.2.1 - project: @tryghost/zip 3.3.1
- project: @tryghost/bookshelf-transaction-events 2.2.1 - project: @tryghost/bookshelf-include-count 2.2.1 - project: @tryghost/bookshelf-custom-query 2.2.1 - project: @tryghost/webhook-mock-receiver 2.2.1 - project: @tryghost/bookshelf-eager-load 2.2.1 - project: @tryghost/bookshelf-pagination 2.2.2 - project: @tryghost/bookshelf-collision 2.2.2 - project: @tryghost/bookshelf-has-posts 2.3.1 - project: @tryghost/email-mock-receiver 2.2.1 - project: @tryghost/prometheus-metrics 4.0.1 - project: @tryghost/bookshelf-plugins 2.2.2 - project: @tryghost/bookshelf-filter 2.2.2 - project: @tryghost/bookshelf-search 2.2.1 - project: @tryghost/http-cache-utils 2.2.1 - project: @tryghost/mw-error-handler 3.2.2 - project: @tryghost/bookshelf-order 2.2.1 - project: @tryghost/api-framework 3.2.2 - project: @tryghost/database-info 2.2.1 - project: @tryghost/domain-events 3.2.3 - project: @tryghost/elasticsearch 5.2.1 - project: @tryghost/jest-snapshot 2.2.2 - project: @tryghost/pretty-stream 2.2.1 - project: @tryghost/express-test 2.2.2 - project: @tryghost/http-stream 2.2.2 - project: @tryghost/job-manager 4.0.2 - project: @tryghost/nodemailer 2.2.2 - project: @tryghost/pretty-cli 3.2.1 - project: @tryghost/root-utils 2.2.1 - project: @tryghost/validator 3.1.2 - project: @tryghost/mw-vhost 3.2.1 - project: @tryghost/security 3.2.1 - project: @tryghost/logging 5.0.1 - project: @tryghost/metrics 3.2.1 - project: @tryghost/promise 2.2.1 - project: @tryghost/request 3.2.2 - project: @tryghost/version 2.2.1 - project: @tryghost/config 2.2.1 - project: @tryghost/errors 3.2.2 - project: @tryghost/server 3.0.1 - project: @tryghost/debug 2.2.1 - project: @tryghost/tpl 2.2.1 - project: @tryghost/zip 3.3.2
Kept request parameter handling aligned with the documented accepted values.
- project: @tryghost/bookshelf-transaction-events 2.2.3 - project: @tryghost/bookshelf-include-count 2.2.3 - project: @tryghost/bookshelf-custom-query 2.2.3 - project: @tryghost/webhook-mock-receiver 2.2.3 - project: @tryghost/bookshelf-eager-load 2.2.3 - project: @tryghost/bookshelf-pagination 2.2.4 - project: @tryghost/bookshelf-collision 2.2.4 - project: @tryghost/bookshelf-has-posts 2.3.3 - project: @tryghost/email-mock-receiver 2.2.3 - project: @tryghost/prometheus-metrics 4.0.3 - project: @tryghost/bookshelf-plugins 2.2.4 - project: @tryghost/bookshelf-filter 2.2.4 - project: @tryghost/bookshelf-search 2.2.3 - project: @tryghost/http-cache-utils 2.2.3 - project: @tryghost/mw-error-handler 3.2.4 - project: @tryghost/bookshelf-order 2.2.3 - project: @tryghost/api-framework 3.2.4 - project: @tryghost/database-info 2.2.3 - project: @tryghost/domain-events 3.2.5 - project: @tryghost/elasticsearch 5.2.3 - project: @tryghost/jest-snapshot 2.2.4 - project: @tryghost/pretty-stream 2.2.3 - project: @tryghost/express-test 2.2.4 - project: @tryghost/http-stream 2.2.4 - project: @tryghost/job-manager 4.0.4 - project: @tryghost/nodemailer 2.2.4 - project: @tryghost/pretty-cli 3.2.3 - project: @tryghost/root-utils 2.2.3 - project: @tryghost/validator 3.1.4 - project: @tryghost/mw-vhost 3.2.3 - project: @tryghost/security 3.2.3 - project: @tryghost/logging 5.0.3 - project: @tryghost/metrics 3.2.3 - project: @tryghost/promise 2.2.3 - project: @tryghost/request 3.2.4 - project: @tryghost/version 2.2.3 - project: @tryghost/config 2.2.3 - project: @tryghost/errors 3.2.4 - project: @tryghost/server 3.0.3 - project: @tryghost/debug 2.2.3 - project: @tryghost/tpl 2.2.3 - project: @tryghost/zip 3.3.4
- api-framework lived in the standalone TryGhost/framework repo, but Ghost is its only consumer; co-locating it removes the cross-repo publish + version-bump cycle for every change - grafted via a path-filtered subtree merge so the package's full commit history (authors, dates, messages) is preserved under ghost/api-framework - pure move with no behaviour change; pnpm/Nx workspace integration follows in the next commit
- pointed ghost/core at the workspace package (workspace:*) and removed the now-unused catalog entry, so the in-tree package is the single source - mirrored ghost/core's dependency specs (debug + lodash via catalog, errors/promise/tpl/validator pinned) to avoid installing duplicate copies - swapped the framework repo's oxlint script + root vitest inheritance for a local vitest config and test:unit/test targets so Nx discovers and runs the suite; eslint lint wiring left as a follow-up - marked the package private since it is no longer published from the framework repo
- the package was linted with oxlint/oxfmt in the framework repo; keeping that toolchain self-contained (local .oxlintrc.json/.oxfmtrc.json + catalog'd devDeps) preserves its lint coverage without pulling the code through Ghost's eslint rules - the lint target runs oxlint so Nx run-many -t lint discovers it; format/format:check use oxfmt scoped to js/ts/md so package.json and JSON configs keep Ghost's 2-space manifest style
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
| Command | Status | Duration | Result |
|---|---|---|---|
nx run @tryghost/admin-x-settings:test:acceptance |
❌ Failed | 10m 24s | View ↗ |
nx build @tryghost/signup-form |
✅ Succeeded | <1s | View ↗ |
nx build @tryghost/sodo-search |
✅ Succeeded | <1s | View ↗ |
nx build @tryghost/portal |
✅ Succeeded | <1s | View ↗ |
nx build @tryghost/activitypub |
✅ Succeeded | 1s | View ↗ |
nx build @tryghost/comments-ui |
✅ Succeeded | <1s | View ↗ |
nx build @tryghost/admin-toolbar |
✅ Succeeded | 1s | View ↗ |
nx build @tryghost/announcement-bar |
✅ Succeeded | <1s | View ↗ |
Additional runs (15) |
✅ Succeeded | ... | View ↗ |
💡 Dealing with memory or CPU issues? See memory and CPU details with the resource usage add-on ↗.
☁️ Nx Cloud last updated this comment at 2026-06-18 08:57:29 UTC
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #28704 +/- ##
==========================================
- Coverage 73.90% 73.89% -0.02%
==========================================
Files 1540 1550 +10
Lines 132108 133544 +1436
Branches 15901 16088 +187
==========================================
+ Hits 97640 98679 +1039
- Misses 33483 33892 +409
+ Partials 985 973 -12
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|

What
Relocates
@tryghost/api-frameworkfrom the standaloneTryGhost/frameworkrepo intoghost/api-framework, with its full commit history preserved. Ghost is the package's only consumer, so co-locating it removes the cross-repo publish + version-bump cycle for every change to it.Validation
pnpm installresolves clean under strict catalog mode.pnpm --filter @tryghost/api-framework test:unit→ 115/115 pass.oxlintclean;oxfmt --checkclean.Note for reviewers
The merge joins two previously-unrelated histories, so the commit list includes the package's full upstream history. The diff against
mainis just the addedghost/api-framework/tree plus the small workspace-wiring changes.