Skip to content

build(client): remove remaining Node10 package properties - #28056

Open
Jason Hartman (jason-ha) wants to merge 5 commits into
mainfrom
test/client/3.0/remove-node-10-entrypoint-and-types
Open

build(client): remove remaining Node10 package properties#28056
Jason Hartman (jason-ha) wants to merge 5 commits into
mainfrom
test/client/3.0/remove-node-10-entrypoint-and-types

Conversation

@jason-ha

@jason-ha Jason Hartman (jason-ha) commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #27970 completes #27457.

This introduces a workaround for api-extractor expectation that a package has:

  • one of these properties in package.json:
    • tsdocMetadata
    • exports["."].types
    • types
    • typings
    • main
  • OR tsdoc-metadata.json in package root.

Build task deps were updated to ensure that metadata file is always generated before needed. Ordering that has been lucky for a long-time.

And for the current issue with fluid-framework exporting merge-tree type via sequence, add tsdocMetadata to merge-tree.

Future: just check-in tsdoc-metadata.json to all packages (even private without report generation) and update when versioning changes.

@jason-ha
Jason Hartman (jason-ha) requested review from WillieHabi and a lite review from Copilot August 24, 2026 07:15
@github-actions github-actions Bot added area: examples Changes that focus on our examples area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct area: tools area: runtime Runtime related issues area: loader Loader related issues area: driver Driver related issues area: dds Issues related to distributed data structures area: dev experience Improving the experience of devs building on top of fluid area: repo Repo related work area: website area: dds: sharedstring area: tests Tests to add, test infrastructure improvements, etc area: dds: propertydds area: odsp-driver area: dds: tree base: main PRs targeted against main branch labels Aug 24, 2026
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Hi! Thank you for opening this PR. Want me to review it?

Based on the diff (295 lines, 109 files), I've queued these reviewers:

  • Correctness — logic errors, race conditions, lifecycle issues
  • Security — vulnerabilities, secret exposure, injection
  • API Compatibility — breaking changes, release tags, type design
  • Performance — algorithmic regressions, memory leaks
  • Testing — coverage gaps, hollow tests

How this works

  • Adjust the reviewer set by ticking/unticking boxes above. Reviewer toggles alone don't trigger anything.

  • Tick Start review below to dispatch the review fleet.

  • After review finishes, tick Start review again to request another run — it auto-resets after each dispatch.

  • This comment updates as new commits land; your reviewer selections are preserved.

  • Start review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the removal of legacy Node10-era package entrypoint properties by deleting main / types fields across a broad set of client, tool, test, example, and experimental packages, relying on modern exports-based entrypoints (as introduced in the earlier follow-up work).

Changes:

  • Removed main and/or types fields from many package.json files to eliminate remaining legacy Node10 module-resolution compatibility surface.
  • Standardized package entrypoint declaration to flow through exports (where present), including per-condition typing/runtime mappings.

Reviewed changes

Copilot reviewed 109 out of 109 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/utils/tool-utils/package.json Removes legacy main/types fields in favor of exports.
packages/utils/telemetry-utils/package.json Removes legacy main/types fields in favor of exports.
packages/utils/odsp-doclib-utils/package.json Removes legacy main/types fields in favor of exports.
packages/tools/replay-tool/package.json Removes legacy main/types fields in favor of exports.
packages/tools/fluid-runner/package.json Removes legacy main/types fields in favor of exports.
packages/tools/devtools/devtools/package.json Removes legacy main/types fields in favor of exports.
packages/tools/devtools/devtools-view/package.json Removes legacy main/types fields in favor of exports.
packages/tools/devtools/devtools-core/package.json Removes legacy main/types fields in favor of exports.
packages/tools/changelog-generator-wrapper/package.json Removes main from a tool package (needs a valid module entrypoint to remain loadable).
packages/test/test-utils/package.json Removes legacy main/types fields in favor of exports.
packages/test/test-pairwise-generator/package.json Removes legacy main/types fields in favor of exports.
packages/test/test-drivers/package.json Removes legacy main/types fields in favor of exports.
packages/test/test-driver-definitions/package.json Removes legacy main/types fields (package uses exports-based typing entrypoint).
packages/test/stochastic-test-utils/package.json Removes legacy main/types fields in favor of exports.
packages/service-clients/tinylicious-client/package.json Removes legacy main/types fields in favor of exports.
packages/service-clients/odsp-client/package.json Removes legacy main/types fields in favor of exports.
packages/service-clients/azure-client/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/test-runtime-utils/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/runtime-utils/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/runtime-definitions/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/id-compressor/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/datastore/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/datastore-definitions/package.json Removes legacy main/types fields (definitions package).
packages/runtime/container-runtime/package.json Removes legacy main/types fields in favor of exports.
packages/runtime/container-runtime-definitions/package.json Removes legacy main/types fields (definitions package).
packages/loader/test-loader-utils/package.json Removes legacy main/types fields in favor of exports.
packages/loader/driver-utils/package.json Removes legacy main/types fields in favor of exports.
packages/loader/container-loader/package.json Removes legacy main/types fields in favor of exports.
packages/framework/undo-redo/package.json Removes legacy main/types fields in favor of exports.
packages/framework/type-factory/package.json Removes legacy main/types fields in favor of exports.
packages/framework/tree-agent/package.json Removes legacy main/types fields in favor of exports.
packages/framework/tree-agent-ses/package.json Removes legacy main/types fields in favor of exports.
packages/framework/tree-agent-langchain/package.json Removes legacy main/types fields in favor of exports.
packages/framework/synthesize/package.json Removes legacy main/types fields in favor of exports.
packages/framework/request-handler/package.json Removes legacy main/types fields in favor of exports.
packages/framework/react/package.json Removes legacy main/types fields in favor of exports.
packages/framework/quill-react/package.json Removes legacy main/types fields in favor of exports.
packages/framework/oldest-client-observer/package.json Removes legacy main/types fields in favor of exports.
packages/framework/fluid-static/package.json Removes legacy main/types fields in favor of exports.
packages/framework/fluid-framework/package.json Removes legacy main/types fields in favor of exports.
packages/framework/dds-interceptions/package.json Removes legacy main/types fields in favor of exports.
packages/framework/client-logger/fluid-telemetry/package.json Removes legacy main/types fields in favor of exports.
packages/framework/client-logger/app-insights-logger/package.json Removes legacy main/types fields in favor of exports.
packages/framework/attributor/package.json Removes legacy main/types fields in favor of exports.
packages/framework/aqueduct/package.json Removes legacy main/types fields in favor of exports.
packages/framework/agent-scheduler/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/tinylicious-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/routerlicious-urlResolver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/routerlicious-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/replay-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/odsp-urlResolver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/odsp-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/odsp-driver-definitions/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/local-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/file-driver/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/driver-web-cache/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/driver-base/package.json Removes legacy main/types fields in favor of exports.
packages/drivers/debugger/package.json Removes legacy main/types fields in favor of exports.
packages/dds/tree/package.json Removes legacy main/types fields in favor of exports.
packages/dds/test-dds-utils/package.json Removes legacy main/types fields in favor of exports.
packages/dds/task-manager/package.json Removes legacy main/types fields in favor of exports.
packages/dds/shared-summary-block/package.json Removes legacy main/types fields in favor of exports.
packages/dds/shared-object-base/package.json Removes legacy main/types fields in favor of exports.
packages/dds/sequence/package.json Removes legacy main/types fields in favor of exports.
packages/dds/register-collection/package.json Removes legacy main/types fields in favor of exports.
packages/dds/pact-map/package.json Removes legacy main/types fields in favor of exports.
packages/dds/ordered-collection/package.json Removes legacy main/types fields in favor of exports.
packages/dds/merge-tree/package.json Removes legacy main/types fields in favor of exports.
packages/dds/matrix/package.json Removes legacy main/types fields in favor of exports.
packages/dds/map/package.json Removes legacy main/types fields in favor of exports.
packages/dds/legacy-dds/package.json Removes legacy main/types fields in favor of exports.
packages/dds/ink/package.json Removes legacy main/types fields in favor of exports.
packages/dds/counter/package.json Removes legacy main/types fields in favor of exports.
packages/dds/claims/package.json Removes legacy types field in favor of exports typing entrypoint.
packages/dds/cell/package.json Removes legacy main/types fields in favor of exports.
packages/common/driver-definitions/package.json Removes legacy main/types fields in favor of exports.
packages/common/core-utils/package.json Removes legacy main/types fields in favor of exports.
packages/common/core-interfaces/package.json Removes legacy main/types fields in favor of exports.
packages/common/container-definitions/package.json Removes legacy main/types fields in favor of exports.
packages/common/client-utils/package.json Removes legacy main/types fields in favor of exports.
experimental/PropertyDDS/packages/property-dds/package.json Removes legacy main/types fields in favor of exports.
experimental/PropertyDDS/packages/property-changeset/package.json Removes legacy main/types fields in favor of exports.
experimental/framework/last-edited/package.json Removes legacy main/types fields in favor of exports.
experimental/framework/data-objects/package.json Removes legacy main/types fields in favor of exports.
experimental/dds/tree/package.json Removes legacy main/types fields in favor of exports.
experimental/dds/sequence-deprecated/package.json Removes legacy main/types fields in favor of exports.
experimental/dds/ot/sharejs/json1/package.json Removes legacy main/types fields in favor of exports.
experimental/dds/ot/ot/package.json Removes legacy main/types fields in favor of exports.
examples/utils/webpack-fluid-loader/package.json Removes legacy main/types fields in favor of exports/workspace usage.
examples/utils/example-webpack-integration/package.json Removes legacy main/types fields in favor of exports/workspace usage.
examples/utils/example-utils/package.json Removes legacy main/types fields in favor of exports/workspace usage.
examples/utils/example-driver/package.json Removes legacy main/types fields in favor of exports.
examples/data-objects/table-document/package.json Removes legacy main/types fields (example package).
examples/data-objects/prosemirror/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/triangle-view/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/slider-coordinate-view/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/plot-coordinate-view/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/interface/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/coordinate-model/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/constellation-view/package.json Removes legacy main/types fields (example package).
examples/data-objects/multiview/constellation-model/package.json Removes legacy main/types fields (example package).
examples/data-objects/codemirror/package.json Removes legacy main/types fields (example package).
examples/data-objects/clicker/package.json Removes legacy main/types fields (example package).
examples/benchmarks/bubblebench/shared-tree/package.json Removes legacy main/types fields (benchmark package).
examples/benchmarks/bubblebench/common/package.json Removes legacy main/types fields (benchmark package).
examples/apps/task-selection/package.json Removes legacy main/types fields (example app package).
examples/apps/collaborative-textarea/package.json Removes legacy main/types fields (example app package).
examples/apps/blobs/package.json Removes legacy main/types fields (example app package).
azure/packages/azure-service-utils/package.json Removes legacy main/types fields in favor of exports.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/tools/changelog-generator-wrapper/package.json
@jason-ha Jason Hartman (jason-ha) linked an issue Aug 24, 2026 that may be closed by this pull request
- revert to main for changelog-generator-wrapper
- add exports for blobs and task-selection examples that limit import to supported case (ESM only as packages have top-level `await`s)
Reports may vary if the metadata file is not present and discovered by `tsdocMetadata` in package.json and without a `exports["."].types` entry api-extractor looks to `types`, `typings`, and `main`, and finally the package root.

Ensure that metadata file is always generated. And for the current issue with fluid-framework exporting merge-tree type via sequence, add `tsdocMetadata` to merge-tree.
@github-actions

Copy link
Copy Markdown
Contributor

Bundle size comparison

Base commit: 223545bdcdff87b5dd3f117f6c35a7c3ac280e22
Head commit: e1189ed2016f77327d70c9dfb16f5b6281354e29

Notable changes

No bundles changed by ≥ 500 bytes parsed.

Per-bundle deltas

@fluid-example/bundle-size-tests

  • fluidFrameworkAllAlpha.js: parsed 790591 → 790649 (+58), gzip 217165 → 217239 (+74)
  • azureClient.js: parsed 633307 → 633302 (-5), gzip 169726 → 169797 (+71)
  • odspClient.js: parsed 606510 → 606624 (+114), gzip 163247 → 163366 (+119)
  • aqueduct.js: parsed 537183 → 537196 (+13), gzip 144292 → 144337 (+45)
  • fluidFramework.js: parsed 409151 → 409184 (+33), gzip 115982 → 116008 (+26)
  • sharedTree.js: parsed 398530 → 398556 (+26), gzip 113400 → 113420 (+20)
  • containerRuntime.js: parsed 314010 → 313988 (-22), gzip 86157 → 86155 (-2)
  • sharedString.js: parsed 175203 → 175210 (+7), gzip 49656 → 49663 (+7)
  • experimentalSharedTree.js: parsed 161812 → 161812 (0), gzip 46711 → 46711 (0)
  • matrix.js: parsed 159582 → 159589 (+7), gzip 45896 → 45903 (+7)
  • loader.js: parsed 147287 → 147303 (+16), gzip 40026 → 40036 (+10)
  • odspDriver.js: parsed 111483 → 111559 (+76), gzip 34688 → 34763 (+75)
  • directory.js: parsed 65635 → 65642 (+7), gzip 18481 → 18489 (+8)
  • 578.js: parsed 58686 → 58686 (0), gzip 17657 → 17657 (0)
  • odspPrefetchSnapshot.js: parsed 45884 → 45865 (-19), gzip 15335 → 15350 (+15)
  • map.js: parsed 45786 → 45793 (+7), gzip 14109 → 14116 (+7)
  • 252.js: parsed 44362 → 44362 (0), gzip 13735 → 13735 (0)
  • summarizerDelayLoadedModule.js: parsed 31287 → 31287 (0), gzip 7929 → 7929 (0)
  • socketModule.js: parsed 26992 → 26962 (-30), gzip 8019 → 8052 (+33)
  • createNewModule.js: parsed 8523 → 8517 (-6), gzip 3550 → 3561 (+11)
  • odspPointInTime.js: parsed 5190 → 5184 (-6), gzip 2026 → 2028 (+2)
  • summaryModule.js: parsed 3888 → 3888 (0), gzip 1874 → 1874 (0)
  • connectionState.js: parsed 909 → 909 (0), gzip 500 → 500 (0)
  • sharedTreeAttributes.js: parsed 845 → 852 (+7), gzip 493 → 503 (+10)
  • debugAssert.js: parsed 429 → 429 (0), gzip 299 → 299 (0)
  • FluidFramework-HashFallback.js: parsed 419 → 419 (0), gzip 313 → 313 (0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: dds: propertydds area: dds: sharedstring area: dds: tree area: dds Issues related to distributed data structures area: dev experience Improving the experience of devs building on top of fluid area: driver Driver related issues area: examples Changes that focus on our examples area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct area: loader Loader related issues area: odsp-driver area: repo Repo related work area: runtime Runtime related issues area: tests Tests to add, test infrastructure improvements, etc area: tools area: website base: main PRs targeted against main branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Removal of Node10 resolutions in v3.0

3 participants