build(eslint-config-fluid): restore as independent workspace#26427
build(eslint-config-fluid): restore as independent workspace#26427tylerbutler merged 24 commits intomicrosoft:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Restores @fluidframework/eslint-config-fluid as an independently versioned workspace (v9.0.0) instead of being part of the client release group, and updates the repo to consume it via ~9.0.0 while using a local link: override for in-repo development/builds.
Changes:
- Removed
common/build/eslint-config-fluidfrom the root pnpm workspace and re-enabled its publish/pack behavior in CI. - Updated repo packages to depend on
@fluidframework/eslint-config-fluidvia~9.0.0instead ofworkspace:*. - Updated root dependency resolution to use
link:+ pnpm override and added a rootpostinstallto install transitive deps for the linked config.
Reviewed changes
Copilot reviewed 161 out of 162 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/pipelines/build-eslint-config-fluid.yml | Re-enables default packing behavior by removing the taskPack: false override. |
| tools/pipelines/build-client.yml | Removes temporary path exclusions now that eslint-config-fluid is no longer in the client release group. |
| syncpack.config.cjs | Re-enables syncpack version consistency checks for @fluidframework/eslint-config-fluid. |
| pnpm-workspace.yaml | Removes common/build/eslint-config-fluid from the root workspace packages list. |
| package.json | Adds a postinstall to install eslint-config-fluid’s deps; switches root dependency to local link and adds pnpm override. |
| fluidBuild.config.cjs | Removes temporary policy-check exclusion for eslint-config-fluid. |
| common/build/eslint-config-fluid/package.json | Marks eslint-config-fluid as publishable again and bumps version to 9.0.0. |
| packages/utils/tool-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/utils/telemetry-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/utils/odsp-doclib-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/replay-tool/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/fluid-runner/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/fetch-tool/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-test-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-core/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-browser-extension/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/changelog-generator-wrapper/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-version-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-service-load/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-pairwise-generator/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-end-to-end-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-drivers/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/stochastic-test-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/snapshots/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/mocha-test-setup/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/local-server-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/local-server-stress-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/functional-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/tinylicious-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/odsp-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/end-to-end-tests/odsp-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/end-to-end-tests/azure-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/azure-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/test-runtime-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/runtime-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/runtime-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/id-compressor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/datastore/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/datastore-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/container-runtime/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/container-runtime-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/test-loader-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/driver-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/container-loader/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/undo-redo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent-ses/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent-langchain/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/synthesize/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/request-handler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/react/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/presence/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/oldest-client-observer/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/fluid-static/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/fluid-framework/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/dds-interceptions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/data-object-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/attributor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/aqueduct/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/agent-scheduler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/tinylicious-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/routerlicious-urlResolver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/routerlicious-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/replay-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-urlResolver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/local-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/file-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/driver-web-cache/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/driver-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/debugger/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/test-dds-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/task-manager/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/shared-summary-block/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/shared-object-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/sequence/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/register-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/pact-map/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/ordered-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/merge-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/matrix/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/map/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/legacy-dds/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/ink/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/counter/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/cell/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/core-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/core-interfaces/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/container-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/client-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/framework/last-edited/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/framework/data-objects/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/sequence-deprecated/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/ot/sharejs/json1/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/ot/ot/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/view-framework-sampler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/external-views/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/container-views/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/tree-shim/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/separate-container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/same-container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/live-schema-upgrade/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/webpack-fluid-loader/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/migration-tools/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/import-testing/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-webpack-integration/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/bundle-size-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/odsp-client/shared-tree-demo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/azure-client/todo-list/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/azure-client/external-controller/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/external-data/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/webflow/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/todo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/text-editor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/table-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/table-document/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/smde/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/prosemirror/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/triangle-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/slider-coordinate-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/plot-coordinate-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/interface/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/coordinate-model/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/constellation-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/constellation-model/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/monaco/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/inventory-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/codemirror/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/clicker/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/canvas/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/client-logger/app-insights-logger/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/tablebench/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/odspsnapshotfetch-perftestapp/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/shared-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/ot/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/experimental-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/common/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/baseline/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/tree-comparison/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/tree-cli-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/task-selection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/staging/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/presence-tracker/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/diceroller/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/data-object-grid/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/contact-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/collaborative-textarea/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/blobs/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| azure/packages/azure-service-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| azure/packages/azure-local-service/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
f471425 to
098813a
Compare
3552a45 to
aa6a972
Compare
Add comment for npm-package-types-field exclusion and use pnpm -C with --frozen-lockfile for postinstall.
Resolve merge conflict in package.json keeping both install:agency and postinstall scripts.
Updated build-tools to 0.64.0, kept eslint catalog and version 9.0.0 with private flag from main.
The package needs to be published, so it should not be marked private.
jason-ha
left a comment
There was a problem hiding this comment.
I like it but I think some changes are not yet ready to be made.
| @@ -103,7 +103,6 @@ a diff to review as part of a PR -- just like we do with API reports for code ch | |||
| |--------|-------------| | |||
| | `build` | `npm run print-config` | | |||
There was a problem hiding this comment.
pre-existing: build does npm run print-configs && npm run prettier
| ], | ||
| "overrides": { | ||
| "@biomejs/biome": "~2.4.5", | ||
| "@fluidframework/eslint-config-fluid": "link:common/build/eslint-config-fluid", |
There was a problem hiding this comment.
Does this need to be an override? Why can't we just have this in the catalog settings?
Bonus: you'll be able to make better comments there.
There was a problem hiding this comment.
Because catalogs weren't in when I made this PR over a month ago. I'm just trying to get it merged ASAP.
There was a problem hiding this comment.
ERR_PNPM_CATALOG_ENTRY_INVALID_SPEC The entry for '@fluidframework/eslint-config-fluid' in catalog 'eslint' declares a dependency using the 'link' protocol. This is not yet supported, but may be in a future version of pnpm.
There was a problem hiding this comment.
Comments would be nice - not a blocker
There was a problem hiding this comment.
I feel like this might mess with Component Governance - there will be installs that are not in the lockfile.
Assuming this is just a transition step, then okay!
There was a problem hiding this comment.
I don't follow. What is not covered by the root and eslint-config-fluid lockfiles?
There was a problem hiding this comment.
It is probably fine. The root lockfile no longer represents the entirety of dependencies that the client workspace has. I would hope that all installs for a job are checked - but it feels like there could be missing association.
There was a problem hiding this comment.
If I understood this correctly, the concern about the deps in eslint-config-fluid not being represented in the root lockfile is valid but the infra/tooling should still protect us. The install of eslint-config-fluid's deps should (right?) follow the lockfile in that folder, and all lockfiles in the repo are scanned during the Component Governance check. (For better and for worse; I'm not a fan of how we need to run all pipelines after updating the root lockfile, or one of the server lockfiles, so all pipelines declare a given alert resolved).
jason-ha
left a comment
There was a problem hiding this comment.
two notes holding up me approving...
| ], | ||
| "overrides": { | ||
| "@biomejs/biome": "~2.4.5", | ||
| "@fluidframework/eslint-config-fluid": "link:common/build/eslint-config-fluid", |
There was a problem hiding this comment.
Comments would be nice - not a blocker
|
Something in build wants to change the README. Not sure why client build found that versus eslint-config-fluid build. |
The auto-generated PACKAGE_SCRIPTS section was missing the `clean` script, causing the CI "Check for extraneous modified files" step to fail when markdown-magic regenerated it during the build.
The pnpm override still resolves to the local link: during development. Using the catalog entry is cleaner and aligns with the pattern used for other shared dependencies.
|
🔗 No broken links found! ✅ Your attention to detail is admirable. linkcheck output |
Summary
Reverses #25806 which temporarily moved
@fluidframework/eslint-config-fluidinto the client release group. The package is restored as an independently versioned workspace at v9.0.0, preparing it for its next published release with ESLint 9 flat config support.Key changes
9.0.0, removedprivate: true, removedtypeValidationblock in package.json. All ESLint 9 work (flat config, typescript-eslint 8.54, etc.) is preserved.eslintcatalog group foreslint,eslint-config-prettier, and@fluid-internal/eslint-config-fluid.link:protocol with a pnpm override to resolve references across the workspace, plus apostinstallscript to install transitive deps. ESLint version moved tocatalog:eslint.workspace:~tocatalog:eslintforeslint-config-fluid,eslint, andeslint-config-prettier.npm-private-packagespolicy exclusion; addednpm-package-types-fieldexclusion.eslint-config-fluid(link: protocol is unresolvable by syncpack).taskPackfor publishing.