diff --git a/.github/labeler-areas.yml b/.github/labeler-areas.yml index 98f2f825285b..2f8ec3fcec36 100644 --- a/.github/labeler-areas.yml +++ b/.github/labeler-areas.yml @@ -4,89 +4,129 @@ # see how this config file is used. "area: build": - - ".github/*" - - ".github/workflows/**" - - "build-tools/**" - - "common/build/**" - - "tools/markdown-magic/**" - - "tools/pipelines/**" + changed-files: + - any-glob-to-any-file: + - ".github/*" + - ".github/workflows/**" + - "build-tools/**" + - "common/build/**" + - "tools/markdown-magic/**" + - "tools/pipelines/**" "area: contributor experience": - - ".vscode/**" + changed-files: + - any-glob-to-any-file: ".vscode/**" "area: dds": - - experimental/dds/** - - packages/dds/** + changed-files: + - any-glob-to-any-file: + - experimental/dds/** + - packages/dds/** "area: dds: tree": - - experimental/dds/tree/** - - experimental/dds/tree2/** - - packages/dds/tree/** + changed-files: + - any-glob-to-any-file: + - experimental/dds/tree/** + - experimental/dds/tree2/** + - packages/dds/tree/** "area: dds: propertydds": - - experimental/PropertyDDS/** + changed-files: + - any-glob-to-any-file: experimental/PropertyDDS/** "area: dds: sharedstring": - - packages/dds/sequence/** + changed-files: + - any-glob-to-any-file: packages/dds/sequence/** "area: definitions": - - common/lib/container-definitions/** - - common/lib/core-interfaces/** - - common/lib/driver-definitions/** + changed-files: + - any-glob-to-any-file: + - common/lib/container-definitions/** + - common/lib/core-interfaces/** + - common/lib/driver-definitions/** "area: dev experience": - - experimental/framework/** + changed-files: + - any-glob-to-any-file: experimental/framework/** "area: driver": - - packages/drivers/** + changed-files: + - any-glob-to-any-file: packages/drivers/** "area: examples": - - examples/** - - experimental/examples/** + changed-files: + - any-glob-to-any-file: + - examples/** + - experimental/examples/** "area: framework": - - packages/framework/** + changed-files: + - any-glob-to-any-file: packages/framework/** "area: loader": - - packages/loader/** + changed-files: + - any-glob-to-any-file: packages/loader/** "area: odsp-driver": - - packages/drivers/*odsp*/** - - packages/utils/odsp-doclib-utils/** + changed-files: + - any-glob-to-any-file: + - packages/drivers/*odsp*/** + - packages/utils/odsp-doclib-utils/** # Add "area: repo" label to any root or .github changes "area: repo": - - any: ["*", ".github/**", "!BREAKING.md"] + changed-files: + - any-glob-to-any-file: + - "*" + - ".github/**" + - "!BREAKING.md" "area: runtime": - - packages/runtime/** + changed-files: + - any-glob-to-any-file: packages/runtime/** "area: server": - - server/** + changed-files: + - any-glob-to-any-file: server/** "area: tests": - - packages/test/** + changed-files: + - any-glob-to-any-file: packages/test/** "area: tools": - - any: ["common/build/**", "tools/**", "!tools/markdown-magic/**"] + changed-files: + - any-glob-to-any-file: + - common/build/** + - tools/** + - "!tools/markdown-magic/**" "area: website": - - any: ["docs/**", "!docs/content/**"] + changed-files: + - any-glob-to-any-file: + - docs/** + - "!docs/content/**" "breaking change": - - BREAKING.md + changed-files: + - any-glob-to-any-file: BREAKING.md "changeset-present": - - .changeset/** - - server/routerlicious/.changeset/** + changed-files: + - any-glob-to-any-file: + - .changeset/** + - server/routerlicious/.changeset/** dependencies: - - package-lock.json - - pnpm-lock.yaml + changed-files: + - any-glob-to-any-file: + - package-lock.json + - pnpm-lock.yaml documentation: - - docs/content/** + changed-files: + - any-glob-to-any-file: docs/content/** # flag changes to public APIs so they can be reviewed to see if they're breaking "public api change": - - "**/api-report/**" + changed-files: + - any-glob-to-any-file: "**/api-report/**" diff --git a/.github/labeler-changesets.yml b/.github/labeler-changesets.yml index a6a7f1264ad7..01ca3ef8a108 100644 --- a/.github/labeler-changesets.yml +++ b/.github/labeler-changesets.yml @@ -5,4 +5,5 @@ # Require changesets for server public API changes "changeset-required": - - "**/routerlicious/api-report/**" + changed-files: + - any-glob-to-any-file: "**/routerlicious/api-report/**" diff --git a/.github/workflows/changeset-reporter.yml b/.github/workflows/changeset-reporter.yml index c627236b3242..4bf48ef69ec2 100644 --- a/.github/workflows/changeset-reporter.yml +++ b/.github/workflows/changeset-reporter.yml @@ -20,13 +20,14 @@ jobs: pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment runs-on: ubuntu-latest steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: persist-credentials: false - name: Download results - uses: dawidd6/action-download-artifact@bd10f381a96414ce2b13a11bfa89902ba7cea07f # ratchet:dawidd6/action-download-artifact@v2.24.3 + # release notes: https://github.com/dawidd6/action-download-artifact/releases/tag/v11 + uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # ratchet:dawidd6/action-download-artifact@v11 with: workflow: pr-check-changeset.yml run_id: ${{ github.event.workflow_run.id }} @@ -38,8 +39,8 @@ jobs: - name: Required but missing if: fromJson(steps.changeset.outputs.CHANGESET).required == true && fromJson(steps.changeset.outputs.CHANGESET).changesetFound == false - # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.0 - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # ratchet:marocchino/sticky-pull-request-comment@v2.9.0 + # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.4 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # ratchet:marocchino/sticky-pull-request-comment@v2 with: header: changeset number: ${{ fromJson(steps.changeset.outputs.CHANGESET).pr }} @@ -47,8 +48,8 @@ jobs: - name: Required and present if: fromJson(steps.changeset.outputs.CHANGESET).required == true && fromJson(steps.changeset.outputs.CHANGESET).changesetFound == true - # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.0 - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # ratchet:marocchino/sticky-pull-request-comment@v2.9.0 + # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.4 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # ratchet:marocchino/sticky-pull-request-comment@v2 with: header: changeset number: ${{ fromJson(steps.changeset.outputs.CHANGESET).pr }} @@ -58,8 +59,8 @@ jobs: - name: Changeset not required if: fromJson(steps.changeset.outputs.CHANGESET).required == false && fromJson(steps.changeset.outputs.CHANGESET).changesetFound == true - # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.0 - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # ratchet:marocchino/sticky-pull-request-comment@v2.9.0 + # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.4 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # ratchet:marocchino/sticky-pull-request-comment@v2 with: header: changeset number: ${{ fromJson(steps.changeset.outputs.CHANGESET).pr }} diff --git a/.github/workflows/linkcheck-reporter.yml b/.github/workflows/linkcheck-reporter.yml index 1731b7d682de..56ba96321be7 100644 --- a/.github/workflows/linkcheck-reporter.yml +++ b/.github/workflows/linkcheck-reporter.yml @@ -7,16 +7,17 @@ on: permissions: contents: read - actions: read # for dawidd6/action-download-artifact to query and download artifacts + actions: read # for dawidd6/action-download-artifact to query and download artifacts jobs: load_report: permissions: - pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment + pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment runs-on: ubuntu-latest steps: - name: Download results - uses: dawidd6/action-download-artifact@bd10f381a96414ce2b13a11bfa89902ba7cea07f # ratchet:dawidd6/action-download-artifact@v2.24.3 + # release notes: https://github.com/dawidd6/action-download-artifact/releases/tag/v11 + uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # ratchet:dawidd6/action-download-artifact@v11 with: workflow: website-validation.yml # workflow_conclusion: completed @@ -28,8 +29,8 @@ jobs: run: echo "pr=$(cat pr)" >> $GITHUB_OUTPUT working-directory: ./results - name: Post report in comment - # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.0 - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # ratchet:marocchino/sticky-pull-request-comment@v2.9.0 + # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.4 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # ratchet:marocchino/sticky-pull-request-comment@v2 with: header: linkreport recreate: true diff --git a/.github/workflows/pr-changeset-review.yml b/.github/workflows/pr-changeset-review.yml index def4ac2c1122..6ec63243c27b 100644 --- a/.github/workflows/pr-changeset-review.yml +++ b/.github/workflows/pr-changeset-review.yml @@ -26,11 +26,13 @@ jobs: name: vale runs-on: ubuntu-latest steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: persist-credentials: false - - uses: errata-ai/vale-action@d89dee975228ae261d22c15adcd03578634d429c # ratchet:errata-ai/vale-action@v2.1.1 + + # release notes: https://github.com/errata-ai/vale-action/releases/tag/v2.1.1 + - uses: errata-ai/vale-action@d89dee975228ae261d22c15adcd03578634d429c # ratchet:errata-ai/vale-action@v2 with: files: .changeset vale_flags: "--glob=*-*-*.md" diff --git a/.github/workflows/pr-check-changeset.yml b/.github/workflows/pr-check-changeset.yml index 779ebcc4c076..dc2dbba1b9a5 100644 --- a/.github/workflows/pr-check-changeset.yml +++ b/.github/workflows/pr-check-changeset.yml @@ -22,8 +22,8 @@ jobs: runs-on: ubuntu-latest if: contains(github.event.pull_request.labels.*.name, 'changeset-required') steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: fetch-depth: "0" # all history persist-credentials: false @@ -76,8 +76,8 @@ jobs: echo $(jq -c '. += {required: false}' changeset-metadata.json) > changeset-metadata.json - name: Upload changeset metadata - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: changeset-metadata path: ./changeset-metadata.json @@ -102,8 +102,8 @@ jobs: echo $(jq -c '. += { pr: "${{ github.event.number }}" }' changeset-metadata.json) > changeset-metadata.json - name: Upload changeset metadata - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: changeset-metadata path: ./changeset-metadata.json diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml index 33dcb85385e9..6aff01f79d35 100644 --- a/.github/workflows/pr-labeler.yml +++ b/.github/workflows/pr-labeler.yml @@ -5,12 +5,12 @@ on: branches: [main, next, release/**/*] permissions: - contents: read # for actions/labeler to determine modified files + contents: read # for actions/labeler to determine modified files jobs: areas_label: permissions: - pull-requests: write # for actions/labeler to add labels to PRs + pull-requests: write # for actions/labeler to add labels to PRs runs-on: ubuntu-latest name: Label areas # Skip labeling main-next merge PRs. The area labels are noisy and distracting for main-next PRs because they can @@ -20,7 +20,8 @@ jobs: # This is implemented by comparing the PR title because at creation time, the PR has no labels (and the GItHub API # does not have a way to set labels at creation either), so skipping based on labels does not work. steps: - - uses: actions/labeler@5c7539237e04b714afd8ad9b4aed733815b9fab4 # ratchet:actions/labeler@v4.0.2 + # release notes: https://github.com/actions/labeler/releases/tag/v6.0.1 + - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # ratchet:actions/labeler@v6 if: "github.event.pull_request.title != 'Automation: main-next integrate'" with: configuration-path: ".github/labeler-areas.yml" @@ -30,21 +31,23 @@ jobs: # this CI job calls the labeler action wuth sync-labels=false, so the label won't be removed automatically. changesets_label: permissions: - pull-requests: write # for actions/labeler to add labels to PRs + pull-requests: write # for actions/labeler to add labels to PRs runs-on: ubuntu-latest name: Label changeset-required steps: - - uses: actions/labeler@5c7539237e04b714afd8ad9b4aed733815b9fab4 # ratchet:actions/labeler@v4.0.2 + # release notes: https://github.com/actions/labeler/releases/tag/v6.0.1 + - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # ratchet:actions/labeler@v6 with: configuration-path: ".github/labeler-changesets.yml" repo-token: "${{ github.token }}" sync-labels: false # The changeset-required label is often added manually, so don't remove it. branches_label: permissions: - pull-requests: write # for actions/labeler to add labels to PRs + pull-requests: write # for actions/labeler to add labels to PRs runs-on: ubuntu-latest name: Label base branches and external contributors steps: - - uses: srvaroa/labeler@9c29ad1ef33d169f9ef33c52722faf47a566bcf3 # ratchet:srvaroa/labeler@v1 + # release notes: https://github.com/srvaroa/labeler/releases/tag/v1.13.0 + - uses: srvaroa/labeler@0a20eccb8c94a1ee0bed5f16859aece1c45c3e55 # ratchet:srvaroa/labeler@v1.13.0 env: GITHUB_TOKEN: "${{ github.token }}" diff --git a/.github/workflows/pr-release-branch-warning.yml b/.github/workflows/pr-release-branch-warning.yml index 9b2ce800ee01..e4346ec7f9bd 100644 --- a/.github/workflows/pr-release-branch-warning.yml +++ b/.github/workflows/pr-release-branch-warning.yml @@ -18,18 +18,18 @@ permissions: jobs: warning: permissions: - pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment + pull-requests: write # for marocchino/sticky-pull-request-comment to create or update PR comment runs-on: ubuntu-latest steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: persist-credentials: false submodules: false - name: Post warning in comment - # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.0 - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # ratchet:marocchino/sticky-pull-request-comment@v2.9.0 + # release notes: https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v2.9.4 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # ratchet:marocchino/sticky-pull-request-comment@v2 with: header: release-warning path: ${{ github.workspace }}/.github/workflows/data/release-branch-warning.md diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 73208834526e..28bff5f65038 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -19,10 +19,12 @@ jobs: name: Validate CODEOWNERS runs-on: ubuntu-latest steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: persist-credentials: false + + # release notes: https://github.com/mszostok/codeowners-validator/releases/tag/v0.7.4 - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f # ratchet:mszostok/codeowners-validator@v0.7.4 with: github_access_token: "${{ secrets.GITHUB_TOKEN }}" @@ -35,6 +37,7 @@ jobs: name: PR template placeholder content runs-on: ubuntu-latest steps: + # release notes: https://github.com/sitezen/pr-comment-checker/releases/tag/v1.0.1 - uses: sitezen/pr-comment-checker@f1e956fac00c6d1163d15841886ae80b7ae58ecb # ratchet:sitezen/pr-comment-checker@v1.0.1 with: pr_description_should_not_contain: | diff --git a/.github/workflows/push-tag-create-release.yml b/.github/workflows/push-tag-create-release.yml index 40e3d7326fc6..5a289c86fe74 100644 --- a/.github/workflows/push-tag-create-release.yml +++ b/.github/workflows/push-tag-create-release.yml @@ -26,7 +26,7 @@ permissions: jobs: create-release: permissions: - contents: write # for ncipollo/release-action to create a release + contents: write # for ncipollo/release-action to create a release name: Create GitHub release runs-on: ubuntu-latest steps: @@ -76,8 +76,8 @@ jobs: run: | flub release fromTag $TAG_NAME --json | jq -c > release-metadata.json - name: Upload release metadata JSON - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: release-metadata path: release-metadata.json @@ -116,8 +116,8 @@ jobs: mkdir reports flub release report -g ${{ fromJson(env.RELEASE_JSON).packageOrReleaseGroup }} -o reports - name: Upload release reports - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: release-reports path: reports @@ -152,7 +152,8 @@ jobs: # Only creates GH releases for client, server, and build-tools releases. - name: Create GH release if: fromJson(env.RELEASE_JSON).packageOrReleaseGroup == 'client' || fromJson(env.RELEASE_JSON).packageOrReleaseGroup == 'build-tools' || fromJson(env.RELEASE_JSON).packageOrReleaseGroup == 'server' - uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # ratchet:ncipollo/release-action@v1 + # release notes: https://github.com/ncipollo/release-action/releases/tag/v1.20.0 + uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # ratchet:ncipollo/release-action@v1 with: # Allow updates to existing releases. allowUpdates: true diff --git a/.github/workflows/release-approval.yml b/.github/workflows/release-approval.yml index 86f3327fe220..8493f9a0948d 100644 --- a/.github/workflows/release-approval.yml +++ b/.github/workflows/release-approval.yml @@ -21,8 +21,8 @@ on: required: true permissions: - actions: read # Needed to download artifacts from the release-branches workflow - pull-requests: read # Needed to read the PR details, such as the head commit SHA and the PR number. + actions: read # Needed to download artifacts from the release-branches workflow + pull-requests: read # Needed to read the PR details, such as the head commit SHA and the PR number. jobs: metadata: @@ -37,8 +37,8 @@ jobs: ### These steps run on workflow_run event only ### - name: Download metadata if: github.event_name == 'workflow_run' - # release notes: https://github.com/dawidd6/action-download-artifact/releases/tag/v6 - uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # ratchet:dawidd6/action-download-artifact@v6 + # release notes: https://github.com/dawidd6/action-download-artifact/releases/tag/v11 + uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # ratchet:dawidd6/action-download-artifact@v11 with: workflow: release-branches.yml run_id: ${{ github.event.workflow_run.id }} @@ -79,8 +79,8 @@ jobs: - name: "workflow_dispatch: Load commit_sha" id: workflow_dispatch_load_commit_sha if: github.event_name == 'workflow_dispatch' - # release notes: https://github.com/actions/github-script/releases/tag/v7.0.1 - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # ratchet:actions/github-script@v7.0.1 + # release notes: https://github.com/actions/github-script/releases/tag/v8 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # ratchet:actions/github-script@v8 env: PR_NUMBER: ${{ steps.workflow_dispatch_load_pr.outputs.pr_num }} with: @@ -114,8 +114,8 @@ jobs: status: pending context: Check PR approval - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: # The default ref when triggered by the workflow_run event is the default branch -- main # This means the build-tools from the main branch will always be used. diff --git a/.github/workflows/release-branches.yml b/.github/workflows/release-branches.yml index 3393142ceebe..09484caf0cbd 100644 --- a/.github/workflows/release-branches.yml +++ b/.github/workflows/release-branches.yml @@ -79,8 +79,8 @@ jobs: run: echo ${{ github.event.pull_request.head.sha }} > ./artifacts/commit_sha - name: Upload artifact - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: release-branch-pr-metadata path: ./artifacts diff --git a/.github/workflows/release-notes-issue.yml b/.github/workflows/release-notes-issue.yml index 3aca946814eb..347114a26895 100644 --- a/.github/workflows/release-notes-issue.yml +++ b/.github/workflows/release-notes-issue.yml @@ -29,8 +29,8 @@ jobs: runs-on: ubuntu-latest steps: # Check out the repo and set up node and pnpm. - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: fetch-depth: "100" persist-credentials: false @@ -87,8 +87,8 @@ jobs: # Read the issue intro from a data file and put it in an output variable. - name: Read issue intro template id: intro - # release notes: https://github.com/Lehoczky/render-nunjucks-template-action/releases/tag/v1.0.0 - uses: Lehoczky/render-nunjucks-template-action@9e23a64f080194d15347e881438ee53201e25c25 # ratchet:Lehoczky/render-nunjucks-template-action@v1.0.0 + # release notes: https://github.com/Lehoczky/render-nunjucks-template-action/releases/tag/v1.1.0 + uses: Lehoczky/render-nunjucks-template-action@2012ccb3cdcd8503fa86dd9007255c25139b8f44 # ratchet:Lehoczky/render-nunjucks-template-action@v1.1.0 with: template-path: .github/workflows/data/release-notes-issue-intro.njk vars: | diff --git a/.github/workflows/stale-branches.yml b/.github/workflows/stale-branches.yml index 3af7095a379b..6ef5a0ed4743 100644 --- a/.github/workflows/stale-branches.yml +++ b/.github/workflows/stale-branches.yml @@ -23,8 +23,10 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # ratchet:actions/checkout@v2 + - name: Run delete-old-branches-action - uses: beatlabs/delete-old-branches-action@db61ade054731e37b5740e23336445fbc75ccd7b # ratchet:beatlabs/delete-old-branches-action@v0.0.9 + # release notes: https://github.com/beatlabs/delete-old-branches-action/releases/tag/v0.0.11 + uses: beatlabs/delete-old-branches-action@4eeeb8740ff8b3cb310296ddd6b43c3387734588 # ratchet:beatlabs/delete-old-branches-action@v0.0.11 with: repo_token: ${{ github.token }} date: '6 months ago' diff --git a/.github/workflows/website-validation.yml b/.github/workflows/website-validation.yml index d7aa4a7286d9..556a4f30c7ce 100644 --- a/.github/workflows/website-validation.yml +++ b/.github/workflows/website-validation.yml @@ -26,8 +26,8 @@ jobs: runs-on: ubuntu-latest name: Build site steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: submodules: false @@ -48,8 +48,8 @@ jobs: run: | ./validateHashes.sh - name: Upload site artifact - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: fluidframework-site path: docs/build @@ -60,8 +60,8 @@ jobs: runs-on: ubuntu-latest name: pnpm lint steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: submodules: false @@ -85,8 +85,8 @@ jobs: name: 🧪 Website Tests needs: build_site steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: submodules: false @@ -101,8 +101,8 @@ jobs: cache-dependency-path: docs/pnpm-lock.yaml - name: Download site artifact - # release notes: https://github.com/actions/download-artifact/releases/tag/v4.1.8 - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # ratchet:actions/download-artifact@v4 + # release notes: https://github.com/actions/download-artifact/releases/tag/v6.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # ratchet:actions/download-artifact@v6 with: name: fluidframework-site path: docs/build @@ -118,8 +118,8 @@ jobs: name: 🔗 Broken Link Check needs: build_site steps: - # release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # ratchet:actions/checkout@v5 + # release notes: https://github.com/actions/checkout/releases/tag/v6.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # ratchet:actions/checkout@v6 with: submodules: false @@ -136,8 +136,8 @@ jobs: run: mkdir -p ./results - name: Download site artifact - # release notes: https://github.com/actions/download-artifact/releases/tag/v4.1.8 - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # ratchet:actions/download-artifact@v4 + # release notes: https://github.com/actions/download-artifact/releases/tag/v6.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # ratchet:actions/download-artifact@v6 with: name: fluidframework-site path: docs/build @@ -159,8 +159,8 @@ jobs: cat ./results/linkcheck-output.txt | tee -a ./results/linkcheck echo -e "\n\`\`\`" | tee -a ./results/linkcheck - name: Upload results artifact - # release notes: https://github.com/actions/upload-artifact/releases/tag/v4.4.3 - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # ratchet:actions/upload-artifact@v4 + # release notes: https://github.com/actions/upload-artifact/releases/tag/v5.0.0 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # ratchet:actions/upload-artifact@v5 with: name: website-validation-results path: ./docs/results diff --git a/.vscode/tasks.json b/.vscode/tasks.json index de193cf16258..b6217f369b1a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -22,7 +22,6 @@ "base": "$tsc", "fileLocation": "absolute", }, - "$tslint5", ], }, { @@ -44,7 +43,6 @@ "base": "$tsc", "fileLocation": "absolute", }, - "$tslint5", ], }, { diff --git a/DEV.md b/DEV.md new file mode 100644 index 000000000000..e28972e50c37 --- /dev/null +++ b/DEV.md @@ -0,0 +1,17 @@ +# Guidance for FluidFramework maintainers and contributors + +## Dependencies + +This document tracks dependencies that cannot be upgraded to their latest major versions due to technical limitations. + +### Pinned + +The following dependencies are pinned to older major versions because newer versions are incompatible with the current codebase. + +#### ESM-only dependencies (Cannot upgrade while shipping CJS) + +1. **uuid** - Pinned to `^11.x` + - Latest: `^13.x` + - Issue: Version 12+ removed CommonJS support entirely + - Impact: FluidFramework packages ship dual ESM/CJS builds. When consumers `require()` our packages, the CJS output would fail to `require('uuid')` since uuid v12+ is ESM-only. + - Used in: Many packages across the repo (telemetry-utils, container-loader, odsp-driver, etc.) diff --git a/PACKAGES.md b/PACKAGES.md index 1a18d7def9d5..e84e939e60e5 100644 --- a/PACKAGES.md +++ b/PACKAGES.md @@ -105,7 +105,7 @@ The dependencies between layers are enforced by the layer-check command._ | Packages | Layer Dependencies | | --- | --- | -| - [@fluid-experimental/data-objects](/experimental/framework/data-objects)
- [@fluid-experimental/property-changeset](/experimental/PropertyDDS/packages/property-changeset)
- [@fluid-experimental/property-common](/experimental/PropertyDDS/packages/property-common)
- [@fluid-internal/platform-dependent](/experimental/PropertyDDS/packages/property-common/platform-dependent) (private)
- [@fluid-experimental/property-dds](/experimental/PropertyDDS/packages/property-dds)
- [@fluid-experimental/property-properties](/experimental/PropertyDDS/packages/property-properties)
- [@fluid-experimental/last-edited](/experimental/framework/last-edited)
- [@fluidframework/agent-scheduler](/packages/framework/agent-scheduler)
- [@fluidframework/ai-collab](/packages/framework/ai-collab)
- [@fluidframework/aqueduct](/packages/framework/aqueduct)
- [@fluid-experimental/attributor](/packages/framework/attributor)
- [@fluidframework/app-insights-logger](/packages/framework/client-logger/app-insights-logger)
- [@fluidframework/fluid-telemetry](/packages/framework/client-logger/fluid-telemetry)
- [@fluid-experimental/data-object-base](/packages/framework/data-object-base)
- [@fluid-experimental/dds-interceptions](/packages/framework/dds-interceptions)
- [@fluidframework/fluid-static](/packages/framework/fluid-static)
- [@fluid-experimental/oldest-client-observer](/packages/framework/oldest-client-observer)
- [@fluidframework/presence](/packages/framework/presence)
- [@fluidframework/react](/packages/framework/react)
- [@fluidframework/request-handler](/packages/framework/request-handler)
- [@fluidframework/synthesize](/packages/framework/synthesize)
- [@fluidframework/tree-agent](/packages/framework/tree-agent)
- [@fluidframework/tree-agent-langchain](/packages/framework/tree-agent-langchain)
- [@fluidframework/tree-agent-ses](/packages/framework/tree-agent-ses)
- [@fluidframework/undo-redo](/packages/framework/undo-redo) | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Client-Utils](#Client-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Loader](#Loader)
- [Runtime](#Runtime)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | +| - [@fluid-experimental/data-objects](/experimental/framework/data-objects)
- [@fluid-experimental/property-changeset](/experimental/PropertyDDS/packages/property-changeset)
- [@fluid-experimental/property-common](/experimental/PropertyDDS/packages/property-common)
- [@fluid-internal/platform-dependent](/experimental/PropertyDDS/packages/property-common/platform-dependent) (private)
- [@fluid-experimental/property-dds](/experimental/PropertyDDS/packages/property-dds)
- [@fluid-experimental/property-properties](/experimental/PropertyDDS/packages/property-properties)
- [@fluid-experimental/last-edited](/experimental/framework/last-edited)
- [@fluidframework/agent-scheduler](/packages/framework/agent-scheduler)
- [@fluidframework/aqueduct](/packages/framework/aqueduct)
- [@fluid-experimental/attributor](/packages/framework/attributor)
- [@fluidframework/app-insights-logger](/packages/framework/client-logger/app-insights-logger)
- [@fluidframework/fluid-telemetry](/packages/framework/client-logger/fluid-telemetry)
- [@fluid-experimental/data-object-base](/packages/framework/data-object-base)
- [@fluid-experimental/dds-interceptions](/packages/framework/dds-interceptions)
- [@fluidframework/fluid-static](/packages/framework/fluid-static)
- [@fluid-experimental/oldest-client-observer](/packages/framework/oldest-client-observer)
- [@fluidframework/presence](/packages/framework/presence)
- [@fluidframework/react](/packages/framework/react)
- [@fluidframework/request-handler](/packages/framework/request-handler)
- [@fluidframework/synthesize](/packages/framework/synthesize)
- [@fluidframework/tree-agent](/packages/framework/tree-agent)
- [@fluidframework/tree-agent-langchain](/packages/framework/tree-agent-langchain)
- [@fluidframework/tree-agent-ses](/packages/framework/tree-agent-ses)
- [@fluidframework/undo-redo](/packages/framework/undo-redo) | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Client-Utils](#Client-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Loader](#Loader)
- [Runtime](#Runtime)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | ### Build @@ -183,13 +183,13 @@ The dependencies between layers are enforced by the layer-check command._ | Packages | Layer Dependencies | | --- | --- | -| - [@fluidframework/azure-client](/packages/service-clients/azure-client)
- [@fluidframework/odsp-client](/packages/service-clients/odsp-client)
- [@fluidframework/tinylicious-client](/packages/service-clients/tinylicious-client)
 
 
 
 
 
 
 
 
  | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Driver-Utils](#Driver-Utils)
- [Other-Utils](#Other-Utils)
- [Driver](#Driver)
- [Loader](#Loader)
- [Runtime](#Runtime)
- [Framework](#Framework)
- [Routerlicious-Driver](#Routerlicious-Driver) | +| - [@fluidframework/azure-client](/packages/service-clients/azure-client)
- [@fluidframework/odsp-client](/packages/service-clients/odsp-client)
- [@fluidframework/tinylicious-client](/packages/service-clients/tinylicious-client)
 
 
 
 
 
 
 
 
 
  | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Client-Utils](#Client-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Driver-Utils](#Driver-Utils)
- [Other-Utils](#Other-Utils)
- [Driver](#Driver)
- [Loader](#Loader)
- [Runtime](#Runtime)
- [Framework](#Framework)
- [Routerlicious-Driver](#Routerlicious-Driver) | ### Examples | Packages | Layer Dependencies | | --- | --- | -| - [@fluid-example/ai-collab](/examples/apps/ai-collab) (private)
- [@fluid-example/blobs](/examples/apps/blobs) (private)
- [@fluid-example/collaborative-textarea](/examples/apps/collaborative-textarea) (private)
- [@fluid-example/contact-collection](/examples/apps/contact-collection) (private)
- [@fluid-example/data-object-grid](/examples/apps/data-object-grid) (private)
- [@fluid-example/presence-tracker](/examples/apps/presence-tracker) (private)
- [@fluid-example/staging](/examples/apps/staging) (private)
- [@fluid-example/task-selection](/examples/apps/task-selection) (private)
- [@fluid-example/tree-cli-app](/examples/apps/tree-cli-app) (private)
- [@fluid-example/tree-comparison](/examples/apps/tree-comparison) (private)
- [@fluid-example/bubblebench-baseline](/examples/benchmarks/bubblebench/baseline) (private)
- [@fluid-example/bubblebench-common](/examples/benchmarks/bubblebench/common) (private)
- [@fluid-example/bubblebench-experimental-tree](/examples/benchmarks/bubblebench/experimental-tree) (private)
- [@fluid-example/bubblebench-ot](/examples/benchmarks/bubblebench/ot) (private)
- [@fluid-example/bubblebench-shared-tree](/examples/benchmarks/bubblebench/shared-tree) (private)
- [@fluid-example/odspsnapshotfetch-perftestapp](/examples/benchmarks/odspsnapshotfetch-perftestapp) (private)
- [@fluid-internal/tablebench](/examples/benchmarks/tablebench) (private)
- [@fluid-example/app-insights-logger](/examples/client-logger/app-insights-logger) (private)
- [@fluid-example/canvas](/examples/data-objects/canvas) (private)
- [@fluid-example/clicker](/examples/data-objects/clicker) (private)
- [@fluid-example/codemirror](/examples/data-objects/codemirror) (private)
- [@fluid-example/diceroller](/examples/data-objects/diceroller) (private)
- [@fluid-example/inventory-app](/examples/data-objects/inventory-app) (private)
- [@fluid-example/monaco](/examples/data-objects/monaco) (private)
- [@fluid-example/multiview-constellation-model](/examples/data-objects/multiview/constellation-model) (private)
- [@fluid-example/multiview-constellation-view](/examples/data-objects/multiview/constellation-view) (private)
- [@fluid-example/multiview-container](/examples/data-objects/multiview/container) (private)
- [@fluid-example/multiview-coordinate-model](/examples/data-objects/multiview/coordinate-model) (private)
- [@fluid-example/multiview-coordinate-interface](/examples/data-objects/multiview/interface) (private)
- [@fluid-example/multiview-plot-coordinate-view](/examples/data-objects/multiview/plot-coordinate-view) (private)
- [@fluid-example/multiview-slider-coordinate-view](/examples/data-objects/multiview/slider-coordinate-view) (private)
- [@fluid-example/multiview-triangle-view](/examples/data-objects/multiview/triangle-view) (private)
- [@fluid-example/prosemirror](/examples/data-objects/prosemirror) (private)
- [@fluid-example/smde](/examples/data-objects/smde) (private)
- [@fluid-example/table-document](/examples/data-objects/table-document)
- [@fluid-example/table-tree](/examples/data-objects/table-tree) (private)
- [@fluid-example/todo](/examples/data-objects/todo) (private)
- [@fluid-example/webflow](/examples/data-objects/webflow) (private)
- [@fluid-example/app-integration-external-data](/examples/external-data) (private)
- [@fluid-example/azure-client-todo-list](/examples/service-clients/azure-client/todo-list) (private)
- [@fluid-example/shared-tree-demo](/examples/service-clients/odsp-client/shared-tree-demo) (private)
- [@fluid-example/bundle-size-tests](/examples/utils/bundle-size-tests) (private)
- [@fluid-example/example-driver](/examples/utils/example-driver) (private)
- [@fluid-example/example-utils](/examples/utils/example-utils) (private)
- [@fluid-example/example-webpack-integration](/examples/utils/example-webpack-integration) (private)
- [@fluid-example/import-testing](/examples/utils/import-testing) (private)
- [@fluid-example/migration-tools](/examples/utils/migration-tools) (private)
- [@fluid-example/webpack-fluid-loader](/examples/utils/webpack-fluid-loader) (private)
- [@fluid-example/app-integration-live-schema-upgrade](/examples/version-migration/live-schema-upgrade) (private)
- [@fluid-example/version-migration-same-container](/examples/version-migration/same-container) (private)
- [@fluid-example/version-migration-separate-container](/examples/version-migration/separate-container) (private)
- [@fluid-example/tree-shim](/examples/version-migration/tree-shim) (private)
- [@fluid-example/app-integration-container-views](/examples/view-integration/container-views) (private)
- [@fluid-example/app-integration-external-views](/examples/view-integration/external-views) (private)
- [@fluid-example/view-framework-sampler](/examples/view-integration/view-framework-sampler) (private) | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Client-Utils](#Client-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Driver-Utils](#Driver-Utils)
- [Other-Utils](#Other-Utils)
- [Tool-Utils](#Tool-Utils)
- [Driver](#Driver)
- [Loader](#Loader)
- [Runtime](#Runtime)
- [Framework](#Framework)
- [UberPackage](#UberPackage)
- [Server-Libs](#Server-Libs)
- [Routerlicious-Driver](#Routerlicious-Driver)
- [Test-Utils](#Test-Utils)
- [ServiceClients](#ServiceClients)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | +| - [@fluid-example/blobs](/examples/apps/blobs) (private)
- [@fluid-example/collaborative-textarea](/examples/apps/collaborative-textarea) (private)
- [@fluid-example/contact-collection](/examples/apps/contact-collection) (private)
- [@fluid-example/data-object-grid](/examples/apps/data-object-grid) (private)
- [@fluid-example/diceroller](/examples/apps/diceroller) (private)
- [@fluid-example/presence-tracker](/examples/apps/presence-tracker) (private)
- [@fluid-example/staging](/examples/apps/staging) (private)
- [@fluid-example/task-selection](/examples/apps/task-selection) (private)
- [@fluid-example/tree-cli-app](/examples/apps/tree-cli-app) (private)
- [@fluid-example/tree-comparison](/examples/apps/tree-comparison) (private)
- [@fluid-example/bubblebench-baseline](/examples/benchmarks/bubblebench/baseline) (private)
- [@fluid-example/bubblebench-common](/examples/benchmarks/bubblebench/common) (private)
- [@fluid-example/bubblebench-experimental-tree](/examples/benchmarks/bubblebench/experimental-tree) (private)
- [@fluid-example/bubblebench-ot](/examples/benchmarks/bubblebench/ot) (private)
- [@fluid-example/bubblebench-shared-tree](/examples/benchmarks/bubblebench/shared-tree) (private)
- [@fluid-example/odspsnapshotfetch-perftestapp](/examples/benchmarks/odspsnapshotfetch-perftestapp) (private)
- [@fluid-internal/tablebench](/examples/benchmarks/tablebench) (private)
- [@fluid-example/app-insights-logger](/examples/client-logger/app-insights-logger) (private)
- [@fluid-example/canvas](/examples/data-objects/canvas) (private)
- [@fluid-example/clicker](/examples/data-objects/clicker) (private)
- [@fluid-example/codemirror](/examples/data-objects/codemirror) (private)
- [@fluid-example/inventory-app](/examples/data-objects/inventory-app) (private)
- [@fluid-example/monaco](/examples/data-objects/monaco) (private)
- [@fluid-example/multiview-constellation-model](/examples/data-objects/multiview/constellation-model) (private)
- [@fluid-example/multiview-constellation-view](/examples/data-objects/multiview/constellation-view) (private)
- [@fluid-example/multiview-container](/examples/data-objects/multiview/container) (private)
- [@fluid-example/multiview-coordinate-model](/examples/data-objects/multiview/coordinate-model) (private)
- [@fluid-example/multiview-coordinate-interface](/examples/data-objects/multiview/interface) (private)
- [@fluid-example/multiview-plot-coordinate-view](/examples/data-objects/multiview/plot-coordinate-view) (private)
- [@fluid-example/multiview-slider-coordinate-view](/examples/data-objects/multiview/slider-coordinate-view) (private)
- [@fluid-example/multiview-triangle-view](/examples/data-objects/multiview/triangle-view) (private)
- [@fluid-example/prosemirror](/examples/data-objects/prosemirror) (private)
- [@fluid-example/smde](/examples/data-objects/smde) (private)
- [@fluid-example/table-document](/examples/data-objects/table-document)
- [@fluid-example/table-tree](/examples/data-objects/table-tree) (private)
- [@fluid-example/todo](/examples/data-objects/todo) (private)
- [@fluid-example/webflow](/examples/data-objects/webflow) (private)
- [@fluid-example/app-integration-external-data](/examples/external-data) (private)
- [@fluid-example/azure-client-todo-list](/examples/service-clients/azure-client/todo-list) (private)
- [@fluid-example/shared-tree-demo](/examples/service-clients/odsp-client/shared-tree-demo) (private)
- [@fluid-example/bundle-size-tests](/examples/utils/bundle-size-tests) (private)
- [@fluid-example/example-driver](/examples/utils/example-driver) (private)
- [@fluid-example/example-utils](/examples/utils/example-utils) (private)
- [@fluid-example/example-webpack-integration](/examples/utils/example-webpack-integration) (private)
- [@fluid-example/import-testing](/examples/utils/import-testing) (private)
- [@fluid-example/migration-tools](/examples/utils/migration-tools) (private)
- [@fluid-example/webpack-fluid-loader](/examples/utils/webpack-fluid-loader) (private)
- [@fluid-example/app-integration-live-schema-upgrade](/examples/version-migration/live-schema-upgrade) (private)
- [@fluid-example/version-migration-same-container](/examples/version-migration/same-container) (private)
- [@fluid-example/version-migration-separate-container](/examples/version-migration/separate-container) (private)
- [@fluid-example/tree-shim](/examples/version-migration/tree-shim) (private)
- [@fluid-example/app-integration-container-views](/examples/view-integration/container-views) (private)
- [@fluid-example/app-integration-external-views](/examples/view-integration/external-views) (private)
- [@fluid-example/view-framework-sampler](/examples/view-integration/view-framework-sampler) (private) | - [Core-Interfaces](#Core-Interfaces)
- [Driver-Definitions](#Driver-Definitions)
- [Container-Definitions](#Container-Definitions)
- [Core-Utils](#Core-Utils)
- [Client-Utils](#Client-Utils)
- [Telemetry-Utils](#Telemetry-Utils)
- [Driver-Utils](#Driver-Utils)
- [Other-Utils](#Other-Utils)
- [Tool-Utils](#Tool-Utils)
- [Driver](#Driver)
- [Loader](#Loader)
- [Runtime](#Runtime)
- [Framework](#Framework)
- [UberPackage](#UberPackage)
- [Server-Libs](#Server-Libs)
- [Routerlicious-Driver](#Routerlicious-Driver)
- [Test-Utils](#Test-Utils)
- [ServiceClients](#ServiceClients)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | ### Tools diff --git a/README.md b/README.md index a2283a59ba84..09a89cef78ff 100644 --- a/README.md +++ b/README.md @@ -197,7 +197,8 @@ This section contains common workflows and patterns to increase inner dev loop e ### Troubleshooting - `pnpm clean` if random build failures, especially with no changes -- `git clean -xdf` to remove extraneous files if debugging becomes slow or hangs. +- `git clean -Xdf` to remove extraneous files if debugging becomes slow or hangs. + - `git clean -xdf` (lowercase `x`) can be used (after `-Xdf` for performance reasons) to clean up additional untracked (not staged) files, if there are any. ### Repo maintenance diff --git a/RELEASE_NOTES/2.74.0.md b/RELEASE_NOTES/2.74.0.md new file mode 100644 index 000000000000..8fc3781e1ab0 --- /dev/null +++ b/RELEASE_NOTES/2.74.0.md @@ -0,0 +1,65 @@ + + +# Fluid Framework v2.74.0 + +## Contents + +- [🌳 SharedTree DDS Changes](#-sharedtree-dds-changes) + - [Fixed bug in sending of revert edits after an aborted transaction (#25978)](#fixed-bug-in-sending-of-revert-edits-after-an-aborted-transaction-25978) +- [⚠️ Deprecations](#️-deprecations) + - [ai-collab library has been removed (#26008)](#ai-collab-library-has-been-removed-26008) +- [Legacy API Changes](#legacy-api-changes) + - [Some keys in IFluidCodeDetailsConfig are now reserved for Fluid Framework use (#25641)](#some-keys-in-ifluidcodedetailsconfig-are-now-reserved-for-fluid-framework-use-25641) + +## 🌳 SharedTree DDS Changes + +### Fixed bug in sending of revert edits after an aborted transaction ([#25978](https://github.com/microsoft/FluidFramework/issues/25978)) + +Aborting a transaction used to put the tree in a state that would trigger an assert when sending some undo/redo edits to peers. This would prevent some undo/redo edits from being sent and would put the tree in a broken state that prevented any further edits. This issue could not have caused document corruption, so reopening the document was a possible remedy. Aborting a transaction no longer puts the tree in such a state, so it is safe to perform undo/redo edits after that. + +#### Change details + +Commit: [`93ec6c7`](https://github.com/microsoft/FluidFramework/commit/93ec6c77dab27bd65c2b04862f578ac3876b2cbe) + +Affected packages: + +- @fluidframework/tree +- fluid-framework + +[⬆️ Table of contents](#contents) + +## ⚠️ Deprecations + +### ai-collab library has been removed ([#26008](https://github.com/microsoft/FluidFramework/issues/26008)) + +The team is no longer pursuing this direction for `SharedTree`-based collaboration with AI agents. This library is now considered deprecated. No future versions of this library will be published. + +#### Change details + +Commit: [`b084ac5`](https://github.com/microsoft/FluidFramework/commit/b084ac5dac2c91e590eb97fc2493cd5b2e6c380c) + +Affected packages: + +[⬆️ Table of contents](#contents) + +## Legacy API Changes + +### Some keys in IFluidCodeDetailsConfig are now reserved for Fluid Framework use ([#25641](https://github.com/microsoft/FluidFramework/issues/25641)) + +The keys of [`IFluidCodeDetailsConfig`](https://fluidframework.com/docs/api/container-definitions/ifluidcodedetailsconfig-interface) (the [type of the `config` property on `IFluidCodeDetails`](https://fluidframework.com/docs/api/container-definitions/ifluidcodedetails-interface#config-propertysignature)) used to be entirely free for consumer use. Going forward, keys with the `"FluidFramework."` prefix are reserved for Fluid Framework's internal use. + +We do not expect this to affect any consumers. + +#### Change details + +Commit: [`1eaf526`](https://github.com/microsoft/FluidFramework/commit/1eaf526c813c8e36fc0ad52649b80e2b0c055853) + +Affected packages: + +- @fluidframework/container-definitions + +[⬆️ Table of contents](#contents) + +### 🛠️ Start Building Today! + +Please continue to engage with us on GitHub [Discussion](https://github.com/microsoft/FluidFramework/discussions) and [Issue](https://github.com/microsoft/FluidFramework/issues) pages as you adopt Fluid Framework! diff --git a/RELEASE_NOTES/2.80.0.md b/RELEASE_NOTES/2.80.0.md new file mode 100644 index 000000000000..18e1624e0732 --- /dev/null +++ b/RELEASE_NOTES/2.80.0.md @@ -0,0 +1,129 @@ + + +# Fluid Framework v2.80.0 + +## Contents + +- [🚨 Breaking Changes](#-breaking-changes) + - [Removal of number key support in LatestMap (#25904)](#removal-of-number-key-support-in-latestmap-25904) + - [Added layerIncompatibilityError to FluidErrorTypes, ContainerErrorTypes, DriverErrorTypes and OdspErrorTypes (#26068)](#added-layerincompatibilityerror-to-fluiderrortypes-containererrortypes-drivererrortypes-and-odsperrortypes-26068) + - [TreeBranch operations throw when called during transactions (#26097)](#treebranch-operations-throw-when-called-during-transactions-26097) + - [map: Emit valueChanged events for deleted keys after a clear operation (#26102)](#map-emit-valuechanged-events-for-deleted-keys-after-a-clear-operation-26102) +- [🐛 Bug Fixes](#-bug-fixes) + - [Attendee status fixes on reconnect (#26111)](#attendee-status-fixes-on-reconnect-26111) +- [Legacy API Changes](#legacy-api-changes) + - [Types not intended for consumer implementation/extension are now @sealed (#26024)](#types-not-intended-for-consumer-implementationextension-are-now-sealed-26024) + +## 🚨 Breaking Changes + +### Removal of number key support in LatestMap ([#25904](https://github.com/microsoft/FluidFramework/issues/25904)) + +`number` keys have never been successfully propagated as `number`s at runtime and this type clarification makes that clear. See [issue 25919](https://github.com/microsoft/FluidFramework/issues/25919) for more details. + +#### Change details + +Commit: [`c1d91d8`](https://github.com/microsoft/FluidFramework/commit/c1d91d8b5f4f141f890c848a7f344d4238d4a85a) + +Affected packages: + +- @fluidframework/presence + +[⬆️ Table of contents](#contents) + +### Added layerIncompatibilityError to FluidErrorTypes, ContainerErrorTypes, DriverErrorTypes and OdspErrorTypes ([#26068](https://github.com/microsoft/FluidFramework/issues/26068)) + +The Fluid error type `layerIncompatibilityError` is added to `FluidErrorTypes` and is now @legacy @beta. It is also added to `ContainerErrorTypes`, `DriverErrorTypes` and `OdspErrorTypes` which extend `FluidErrorTypes`. `layerIncompatibilityError` was added as @legacy @alpha in version 2.72.0. The corresponding interface `ILayerIncompatibilityError` for errors of type `layerIncompatibilityError` is now also @legacy @beta. + +See [this issue](https://github.com/microsoft/FluidFramework/issues/25813) for more details. + +#### Change details + +Commit: [`a8532bd`](https://github.com/microsoft/FluidFramework/commit/a8532bdd903626524f17d2ec650d8904046e5308) + +Affected packages: + +- @fluidframework/container-definitions +- @fluidframework/core-interfaces +- @fluidframework/driver-definitions +- @fluidframework/odsp-driver-definitions + +[⬆️ Table of contents](#contents) + +### TreeBranch operations throw when called during transactions ([#26097](https://github.com/microsoft/FluidFramework/issues/26097)) + +This breaking change only affects the behavior of `TreeBranch` methods (currently released as beta). + +- Invoking `TreeBranch.fork()` now throws an error if a transaction is ongoing on the branch. +- Invoking `TreeBranch.merge(sourceBranch)` now throws an error if a transaction is ongoing on the source branch. As before, it also throws an error if a transaction is ongoing on the target (i.e., `this`) branch. +- Invoking `TreeBranch.rebaseOnto(targetBranch)` now throws an error if a transaction is ongoing on the target branch. As before, it also throws an error if a transaction is ongoing on the source (i.e., `this`) branch. + +These new restrictions insulate branches and their dependents from experiencing incomplete transaction changes. This is important because incomplete transaction changes may not uphold application invariants. + +In scenarios that experience the new errors, application authors should consider whether the ongoing transaction can safely be closed before invoking these methods. + +#### Change details + +Commit: [`33b1ec0`](https://github.com/microsoft/FluidFramework/commit/33b1ec0827c433ce9afc126f26457a9245bd43eb) + +Affected packages: + +- @fluidframework/tree +- fluid-framework + +[⬆️ Table of contents](#contents) + +### map: Emit valueChanged events for deleted keys after a clear operation ([#26102](https://github.com/microsoft/FluidFramework/issues/26102)) + +When a `clear` op is processed on SharedMap, `valueChanged` events are now emitted for each key that was deleted. Previously, only the `clear` event was emitted with no subsequent `valueChanged` events. + +#### Change details + +Commit: [`7c9be0e`](https://github.com/microsoft/FluidFramework/commit/7c9be0e2d2cd7dd40aaa6bf6812ad9a6d43609f5) + +Affected packages: + +- @fluidframework/map + +[⬆️ Table of contents](#contents) + +## 🐛 Bug Fixes + +### Attendee status fixes on reconnect ([#26111](https://github.com/microsoft/FluidFramework/issues/26111)) + +Fix "Connected" status for Attendees when local client reconnects (intermittent connection or transition from read-only to read-write connection). This includes no longer emitting incorrect "attendeeDisconnected" events. + +#### Change details + +Commit: [`836f22f`](https://github.com/microsoft/FluidFramework/commit/836f22fac9e8728324ee1f3c34ea27ce8392f07e) + +Affected packages: + +- @fluidframework/presence + +[⬆️ Table of contents](#contents) + +## Legacy API Changes + +### Types not intended for consumer implementation/extension are now @sealed ([#26024](https://github.com/microsoft/FluidFramework/issues/26024)) + +The following types are now explicitly marked as `@sealed` to indicate that they are not intended for consumer implementation or extension. + +- `MockFluidDataStoreRuntime` class in `@fluidframework/test-runtime-utils` +- `IFluidParentContext` interface in `@fluidframework/runtime-definitions` +- `IFluidDataStoreContext` interface in `@fluidframework/runtime-definitions` +- `IFluidDataStoreContextDetached` interface in `@fluidframework/runtime-definitions` + +#### Change details + +Commit: [`75a3861`](https://github.com/microsoft/FluidFramework/commit/75a3861ba8bd4b1b0043bb137a17e0c8d4d3b330) + +Affected packages: + +- @fluidframework/runtime-definitions +- @fluidframework/test-runtime-utils + +[⬆️ Table of contents](#contents) + +### 🛠️ Start Building Today! + +Please continue to engage with us on GitHub [Discussion](https://github.com/microsoft/FluidFramework/discussions) and [Issue](https://github.com/microsoft/FluidFramework/issues) pages as you adopt Fluid Framework! diff --git a/azure/packages/azure-local-service/CHANGELOG.md b/azure/packages/azure-local-service/CHANGELOG.md index ff204ade7519..6df50fb8db19 100644 --- a/azure/packages/azure-local-service/CHANGELOG.md +++ b/azure/packages/azure-local-service/CHANGELOG.md @@ -1,5 +1,13 @@ # @fluidframework/azure-local-service +## 2.80.0 + +Dependency updates only. + +## 2.74.0 + +Dependency updates only. + ## 2.73.0 Dependency updates only. diff --git a/azure/packages/azure-local-service/eslint.config.mts b/azure/packages/azure-local-service/eslint.config.mts new file mode 100644 index 000000000000..e0e0b79eb9eb --- /dev/null +++ b/azure/packages/azure-local-service/eslint.config.mts @@ -0,0 +1,22 @@ +/* eslint-disable */ +/** + * GENERATED FILE - DO NOT EDIT DIRECTLY. + * To regenerate: pnpm tsx scripts/generate-flat-eslint-configs.ts --typescript + */ +import type { Linter } from "eslint"; +import { strict } from "../../../common/build/eslint-config-fluid/flat.mts"; + +const config: Linter.Config[] = [ + ...strict, + { + files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], + languageOptions: { + parserOptions: { + projectService: false, + project: ["./tsconfig.eslint.json"], + }, + }, + }, +]; + +export default config; diff --git a/azure/packages/azure-local-service/package.json b/azure/packages/azure-local-service/package.json index 7131dc42e9cd..a0d9c1448d8f 100644 --- a/azure/packages/azure-local-service/package.json +++ b/azure/packages/azure-local-service/package.json @@ -1,6 +1,6 @@ { "name": "@fluidframework/azure-local-service", - "version": "2.73.0", + "version": "2.80.1", "description": "Local implementation of the Azure Fluid Relay service for testing/development use", "homepage": "https://fluidframework.com", "repository": { @@ -33,12 +33,13 @@ "devDependencies": { "@biomejs/biome": "~1.9.3", "@fluidframework/build-common": "^2.0.3", - "@fluidframework/build-tools": "^0.60.0", + "@fluidframework/build-tools": "^0.62.0", "@fluidframework/eslint-config-fluid": "workspace:~", - "eslint": "~8.57.1", + "eslint": "~9.39.1", "eslint-config-prettier": "~10.1.8", + "jiti": "^2.6.1", "pm2": "^5.4.2", - "rimraf": "^4.4.0" + "rimraf": "^6.1.2" }, "typeValidation": { "disabled": true diff --git a/azure/packages/azure-local-service/tsconfig.eslint.json b/azure/packages/azure-local-service/tsconfig.eslint.json index 3339cc9f8d53..8054c394be0a 100644 --- a/azure/packages/azure-local-service/tsconfig.eslint.json +++ b/azure/packages/azure-local-service/tsconfig.eslint.json @@ -4,6 +4,7 @@ "extends": "../../../common/build/build-common/tsconfig.node16.json", "include": ["index.js"], "compilerOptions": { + "allowJs": true, "noEmit": true, }, } diff --git a/azure/packages/azure-service-utils/CHANGELOG.md b/azure/packages/azure-service-utils/CHANGELOG.md index 4af6f2693e0d..2eeaf48bf67a 100644 --- a/azure/packages/azure-service-utils/CHANGELOG.md +++ b/azure/packages/azure-service-utils/CHANGELOG.md @@ -1,5 +1,13 @@ # @fluidframework/azure-service-utils +## 2.80.0 + +Dependency updates only. + +## 2.74.0 + +Dependency updates only. + ## 2.73.0 Dependency updates only. diff --git a/azure/packages/azure-service-utils/eslint.config.mts b/azure/packages/azure-service-utils/eslint.config.mts new file mode 100644 index 000000000000..64f012833296 --- /dev/null +++ b/azure/packages/azure-service-utils/eslint.config.mts @@ -0,0 +1,33 @@ +/* eslint-disable */ +/** + * GENERATED FILE - DO NOT EDIT DIRECTLY. + * To regenerate: pnpm tsx scripts/generate-flat-eslint-configs.ts --typescript + */ +import type { Linter } from "eslint"; +import { strict } from "../../../common/build/eslint-config-fluid/flat.mts"; + +const config: Linter.Config[] = [ + ...strict, + { + rules: { + "import-x/no-unassigned-import": "off", + "@typescript-eslint/strict-boolean-expressions": "off", + "unicorn/prevent-abbreviations": [ + "error", + { + "allowList": { + "i": true, + }, + }, + ], + }, + }, + { + files: ["src/test/types/*"], + rules: { + "unicorn/prevent-abbreviations": "off", + }, + }, +]; + +export default config; diff --git a/azure/packages/azure-service-utils/package.json b/azure/packages/azure-service-utils/package.json index 207269c82cfb..4fdd9ea0d130 100644 --- a/azure/packages/azure-service-utils/package.json +++ b/azure/packages/azure-service-utils/package.json @@ -1,6 +1,6 @@ { "name": "@fluidframework/azure-service-utils", - "version": "2.73.0", + "version": "2.80.1", "description": "Helper service-side utilities for connecting to Azure Fluid Relay service", "homepage": "https://fluidframework.com", "repository": { @@ -92,20 +92,21 @@ "uuid": "^11.1.0" }, "devDependencies": { - "@arethetypeswrong/cli": "^0.17.1", + "@arethetypeswrong/cli": "^0.18.2", "@biomejs/biome": "~1.9.3", - "@fluid-tools/build-cli": "^0.60.0", - "@fluidframework/azure-service-utils-previous": "npm:@fluidframework/azure-service-utils@2.71.0", + "@fluid-tools/build-cli": "^0.62.0", + "@fluidframework/azure-service-utils-previous": "npm:@fluidframework/azure-service-utils@2.80.0", "@fluidframework/build-common": "^2.0.3", - "@fluidframework/build-tools": "^0.60.0", + "@fluidframework/build-tools": "^0.62.0", "@fluidframework/eslint-config-fluid": "workspace:~", "@microsoft/api-extractor": "7.52.11", "@types/jsrsasign": "^10.5.12", - "concurrently": "^8.2.1", + "concurrently": "^9.2.1", "copyfiles": "^2.4.1", - "eslint": "~8.57.1", + "eslint": "~9.39.1", "eslint-config-prettier": "~10.1.8", - "rimraf": "^4.4.0", + "jiti": "^2.6.1", + "rimraf": "^6.1.2", "typescript": "~5.4.5" }, "typeValidation": { diff --git a/azure/packages/azure-service-utils/src/test/types/validateAzureServiceUtilsPrevious.generated.ts b/azure/packages/azure-service-utils/src/test/types/validateAzureServiceUtilsPrevious.generated.ts index 86d9c383716f..77f447ebfb10 100644 --- a/azure/packages/azure-service-utils/src/test/types/validateAzureServiceUtilsPrevious.generated.ts +++ b/azure/packages/azure-service-utils/src/test/types/validateAzureServiceUtilsPrevious.generated.ts @@ -7,8 +7,8 @@ * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. * Generated by flub generate:typetests in @fluid-tools/build-cli. * - * Baseline (previous) version: 2.71.0 - * Current version: 2.73.0 + * Baseline (previous) version: 2.80.0 + * Current version: 2.80.1 */ import type * as old from "@fluidframework/azure-service-utils-previous/internal"; diff --git a/biome.jsonc b/biome.jsonc index 6d81c18e9fb7..7305cfd9004d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -18,6 +18,9 @@ "**/*.done.build.log", "**/.next", // NextJS + // Webpack output + "**/webpack/**", + // test collateral "**/_package.json", "**/fluid-runner/src/test/localOdspSnapshots/**", @@ -44,6 +47,8 @@ // Test json "build-tools/packages/build-tools/src/test/data/biome/empty.jsonc", + // Biome 2.x test data - these configs use Biome 2.x syntax that Biome 1.x can't parse + "build-tools/packages/build-tools/src/test/data/biome2/**", "experimental/dds/tree/src/test/documents/**", "packages/dds/map/src/test/mocha/snapshots/**/*.json", "packages/dds/matrix/src/test/results/**/*.json", diff --git a/build-tools/.github/copilot-instructions.md b/build-tools/.github/copilot-instructions.md new file mode 100644 index 000000000000..52a30f260d01 --- /dev/null +++ b/build-tools/.github/copilot-instructions.md @@ -0,0 +1,159 @@ +# Copilot Instructions for build-tools + +## Overview + +This is the **build-tools** release group for the Fluid Framework monorepo. It contains CLI tools and libraries for building, testing, releasing, and managing Fluid Framework repositories. + +**Runtime**: Node.js >=20.15.1, pnpm 10.18.3 +**Language**: TypeScript ~5.4.5 +**Module system**: Mix of CommonJS and ESM (see DEV.md for constraints) + +## Packages + +| Package | Description | Output Dir | Module Type | +|---------|-------------|------------|-------------| +| `@fluid-tools/build-cli` (flub) | Main CLI for build/release operations | `lib/` | ESM | +| `@fluidframework/build-tools` | Core build infrastructure, `fluid-build` CLI | `dist/` | CommonJS | +| `@fluid-tools/build-infrastructure` | Workspace and release group abstractions | `lib/` (ESM), `dist/` (CJS) | Dual | +| `@fluid-tools/version-tools` (fluv) | Semantic versioning utilities CLI | `lib/` | CommonJS | +| `@fluidframework/bundle-size-tools` | Bundle size analysis utilities | `dist/` | CommonJS | + +## Build Commands + +**Always run from `build-tools/` directory. Install dependencies first if `node_modules/` doesn't exist.** + +```bash +# Install dependencies (required first time or after package.json changes) +pnpm install + +# Full build (compile + lint + docs) +pnpm build + +# Fast incremental build (compile only) +pnpm build:fast + +# TypeScript compilation only +pnpm tsc + +# Run tests +pnpm test:mocha + +# Lint code +pnpm lint + +# Format code +pnpm format + +# Clean build artifacts +pnpm clean +``` + +## Build Order + +Packages have workspace dependencies and must build in order: +1. `version-tools` (no internal deps) +2. `build-tools` (depends on version-tools) +3. `build-infrastructure` (depends on version-tools) +4. `bundle-size-tools` (no internal deps) +5. `build-cli` (depends on all above) + +The `fluid-build` task scheduler handles this automatically via `pnpm build`. + +## Validation Checklist + +Before submitting changes, verify: + +1. **TypeScript compiles**: `pnpm tsc` +2. **Tests pass**: `pnpm test:mocha` +3. **Lint passes**: `pnpm lint` (runs ESLint + syncpack) +4. **Format is correct**: `pnpm check:format` (uses Biome) + +## Key Configuration Files + +| File | Purpose | +|------|---------| +| `package.json` | Root workspace config, scripts, dependencies | +| `pnpm-workspace.yaml` | Workspace package locations | +| `syncpack.config.cjs` | Dependency version synchronization rules | +| `biome.jsonc` | Code formatting and organization (extends root) | +| `commitlint.config.cjs` | Commit message format (conventional commits, sentence-case) | +| `api-extractor-base.json` | Shared API Extractor configuration | + +Each package has: +- `package.json` - Package config and scripts +- `tsconfig.json` - TypeScript configuration +- `.eslintrc.cjs` - ESLint rules (extends `@fluidframework/eslint-config-fluid`) +- `api-extractor.json` - API report generation (most packages) + +## Dependency Constraints + +**Critical**: Many dependencies are pinned to older versions due to ESM/CommonJS compatibility. See `DEV.md` for the full list. Do not upgrade: + +- `execa` (max ^5.x) +- `globby` (max ^11.x) +- `type-fest` (max ^2.x) +- `eslint` (max ~8.57.0) +- `typescript` (pinned ~5.4.5) + +## Testing + +Tests use Mocha. Test files are in `src/test/` and compile to `lib/test/` or `dist/test/`. + +```bash +# Run all tests +pnpm test:mocha + +# Run tests with coverage +pnpm test:coverage + +# Run tests for a specific package +cd packages/build-cli && pnpm test:mocha +``` + +## Common Tasks + +### Adding a new flub command + +1. Create command file in `packages/build-cli/src/commands/` +2. Commands use oclif framework - extend `BaseCommand` +3. Run `pnpm build:manifest` to update oclif manifest +4. Add tests in `src/test/commands/` + +### Modifying build tasks + +Task definitions are in the repository root (`../fluidBuild.config.cjs`) and can be augmented per-package in `package.json` under `fluidBuild.tasks`. + +### Policy checks + +```bash +# Check repo policy +pnpm policy-check + +# Fix auto-fixable policy issues +pnpm policy-check:fix +``` + +## File Structure + +``` +build-tools/ +├── packages/ +│ ├── build-cli/ # flub CLI (ESM) +│ ├── build-infrastructure/ # Workspace abstractions (dual ESM/CJS) +│ ├── build-tools/ # fluid-build CLI (CommonJS) +│ ├── bundle-size-tools/ # Bundle analysis (CommonJS) +│ └── version-tools/ # fluv CLI (CommonJS) +├── biome.jsonc # Formatter config +├── syncpack.config.cjs # Dep version rules +├── DEV.md # Dependency upgrade blockers +└── pnpm-workspace.yaml # Workspace definition +``` + +## Troubleshooting + +- **"Cannot find module" errors**: Run `pnpm install` then `pnpm build` +- **Type errors after dependency changes**: Run `pnpm clean && pnpm build` +- **Lockfile conflicts**: Use `pnpm install --no-frozen-lockfile` only for local testing +- **ESM import errors**: Check DEV.md - many packages are pinned to CommonJS-compatible versions + +Trust these instructions. Only search the codebase if information here is incomplete or found to be incorrect. diff --git a/build-tools/CHANGELOG.md b/build-tools/CHANGELOG.md index a0bff2ec4c23..231563231169 100644 --- a/build-tools/CHANGELOG.md +++ b/build-tools/CHANGELOG.md @@ -1,3 +1,138 @@ +## [0.61.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.60.0...build-tools_v0.61.0) (2025-12-03) + +No documented changes. + +## [0.60.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.59.0...build-tools_v0.60.0) (2025-11-06) + + +### Features + +* **build-cli:** New vnext generate:changelog command ([#24899](https://github.com/microsoft/FluidFramework/issues/24899)) ([1f7db33](https://github.com/microsoft/FluidFramework/commit/1f7db33691c55a035e44d2678642959b96fa8818)) + + +### Bug Fixes + +* **build-tools:** Fix typetests header version format ([#25830](https://github.com/microsoft/FluidFramework/issues/25830)) ([45f8a0d](https://github.com/microsoft/FluidFramework/commit/45f8a0dcedacc7603b1f06a682fdfbf65b8973a2)) + +## [0.59.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.58.0...build-tools_v0.59.0) (2025-11-05) + + +### Features + +* **build-cli:** add version header to generated type test files ([#25712](https://github.com/microsoft/FluidFramework/issues/25712)) ([360887b](https://github.com/microsoft/FluidFramework/commit/360887b87c8285ef42a3085bfe0e5453875780a0)) +* **build-tools:** Support new release tag scheme ([#24963](https://github.com/microsoft/FluidFramework/issues/24963)) ([acd2fbb](https://github.com/microsoft/FluidFramework/commit/acd2fbbd81c851856cf8416a9bc0c6cb571d3362)) +* **layer-check:** add enhanced duplicate package detection ([#25792](https://github.com/microsoft/FluidFramework/issues/25792)) ([6f67216](https://github.com/microsoft/FluidFramework/commit/6f6721631b9800e792dbed92d3e2afef756f4424)) + + +### Bug Fixes + +* **build-cli:** Ensure generated rollup paths are explicitly relative ([#25431](https://github.com/microsoft/FluidFramework/issues/25431)) ([3d5e8ef](https://github.com/microsoft/FluidFramework/commit/3d5e8ef7bd73f9e77ea54d540c22f73f9903fcd2)), closes [AB#47852](https://github.com/microsoft/AB/issues/47852) +* **build-cli:** Fix `readArgValues` in `generateEntrypoints` ([#25340](https://github.com/microsoft/FluidFramework/issues/25340)) ([9b2b57c](https://github.com/microsoft/FluidFramework/commit/9b2b57cae515a29e34616d27a06939ac2fe5b0fb)) + + +## [0.57.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.56.0...build-tools_v0.57.0) (2025-07-28) + + +### Features + +* **fluid-build:** Leaf Task File Dependencies ([#24929](https://github.com/microsoft/FluidFramework/issues/24929)) ([7463585](https://github.com/microsoft/FluidFramework/commit/74635852c60bbe4414279339a46b244eda6f6cc5)) + + +### Bug Fixes + +* **build-cli:** Use correct line endings ([#24594](https://github.com/microsoft/FluidFramework/issues/24594)) ([de998d0](https://github.com/microsoft/FluidFramework/commit/de998d08d1e80c2825c0310325de5fa71ea4006b)) +* **check:policy:** Use relative paths in package.json repository field ([#24887](https://github.com/microsoft/FluidFramework/issues/24887)) ([67fc07d](https://github.com/microsoft/FluidFramework/commit/67fc07dfe509b1fb1eb7574b4bb61b266666a9c7)) +* **fluid-build:** Declarative tasks depend on the lock file by default ([#24955](https://github.com/microsoft/FluidFramework/issues/24955)) ([4d8f694](https://github.com/microsoft/FluidFramework/commit/4d8f6946e2be25fad00c11e082fbdba817a8305c)) +* **fluid-build:** Support alternate tsBuildInfo path in config ([#24911](https://github.com/microsoft/FluidFramework/issues/24911)) ([bba8017](https://github.com/microsoft/FluidFramework/commit/bba801716c140156e01ed545183bbeda30fac816)) + +## [0.56.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.55.0...build-tools_v0.56.0) (2025-04-15) + + +### Features + +* **fluid-build:** Per package Declarative Tasks ([#24100](https://github.com/microsoft/FluidFramework/issues/24100)) ([b5ce3f0](https://github.com/microsoft/FluidFramework/commit/b5ce3f03f5613e6995a8b415e39fcdb83e90d3ad)) + + +### Bug Fixes + +* **check:policy:** Support running checks from the routerlicious folder ([#24249](https://github.com/microsoft/FluidFramework/issues/24249)) ([f38e5ec](https://github.com/microsoft/FluidFramework/commit/f38e5ec55f7c228ec01dc27b3368ab9fc52c18c9)), closes [#24072](https://github.com/microsoft/FluidFramework/issues/24072) +* **release:** Fix check for git tag ([#24372](https://github.com/microsoft/FluidFramework/issues/24372)) ([02c5170](https://github.com/microsoft/FluidFramework/commit/02c5170a39c4b7993814bf78e3a001d02406d5b1)) + +## [0.56.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.55.0...build-tools_v0.56.0) (2025-12-11) + + +### Bug Fixes + +* **build-cli:** Fix up-to-date branch check ([#23968](https://github.com/microsoft/FluidFramework/issues/23968)) ([d096359](https://github.com/microsoft/FluidFramework/commit/d096359bc0742a0617be2af4dd5d12c93dada58d)) +* **build-tools:** Stop spinner before logging more ([#23912](https://github.com/microsoft/FluidFramework/issues/23912)) ([a3b4aad](https://github.com/microsoft/FluidFramework/commit/a3b4aada7b58caec3bb34f9c2fd789499b8d81ac)) +* **check:policy:** Handle root package.json correctly ([#24228](https://github.com/microsoft/FluidFramework/issues/24228)) ([4097057](https://github.com/microsoft/FluidFramework/commit/4097057a1fb4fa7537250ad46535112a3680a1c7)) +* **publish:tarballs:** Fix unhandled exception when publish fails ([#23953](https://github.com/microsoft/FluidFramework/issues/23953)) ([dd71612](https://github.com/microsoft/FluidFramework/commit/dd71612350833dba875dfc3bba8438f02544824e)) + +## [0.55.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.54.0...build-tools_v0.55.0) (2025-12-11) + + +### Bug Fixes + +* **build-tools:** display BuildGraph errors ([#23875](https://github.com/microsoft/FluidFramework/issues/23875)) ([6ec9c4f](https://github.com/microsoft/FluidFramework/commit/6ec9c4f09070a23d737b3aadaa7f1007232b57e5)) + +## [0.53.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.52.0...build-tools_v0.53.0) (2025-12-11) + + +### Features + +* **build-infrastructure:** Add selection and filtering APIs ([#22866](https://github.com/microsoft/FluidFramework/issues/22866)) ([1b75f54](https://github.com/microsoft/FluidFramework/commit/1b75f54f1a7e4ce636db0c777a61a525078ad852)) +* **generate:assertTags:** Enable per package assert tagging configuration ([#23452](https://github.com/microsoft/FluidFramework/issues/23452)) ([39954b2](https://github.com/microsoft/FluidFramework/commit/39954b2b94234f7508dbd7cdaf06d1b9859ae2ba)) + + +### Bug Fixes + +* **build-cli:** Only update range for workspace:*|^|~ dependencies ([#23669](https://github.com/microsoft/FluidFramework/issues/23669)) ([fe80bd8](https://github.com/microsoft/FluidFramework/commit/fe80bd8fb11566fa21341bd798c54612b80dc068)) +* **build-cli:** Update promptToGenerateReleaseNotes to use non-deprecated flag ([#23482](https://github.com/microsoft/FluidFramework/issues/23482)) ([c55eaac](https://github.com/microsoft/FluidFramework/commit/c55eaac80d2a931ce5cfd49b29eea0376bf40301)) +* **check:policy:** Correct calculation of repo root ([#23839](https://github.com/microsoft/FluidFramework/issues/23839)) ([4343d43](https://github.com/microsoft/FluidFramework/commit/4343d4327c76be93fbf23c41727236824e57069a)), closes [#22695](https://github.com/microsoft/FluidFramework/issues/22695) +* **generate:releaseNotes:** Include changesets with no packages in release notes ([#23273](https://github.com/microsoft/FluidFramework/issues/23273)) ([8e95ada](https://github.com/microsoft/FluidFramework/commit/8e95ada420fb45e0f3ec9974c96efa0fc7a78954)) + +## [0.52.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.51.0...build-tools_v0.52.0) (2025-02-11) + + +### Features + +* **build-infrastructure:** Add selection and filtering APIs ([#22866](https://github.com/microsoft/FluidFramework/issues/22866)) ([1b75f54](https://github.com/microsoft/FluidFramework/commit/1b75f54f1a7e4ce636db0c777a61a525078ad852)) +* **generate:assertTags:** Enable per package assert tagging configuration ([#23452](https://github.com/microsoft/FluidFramework/issues/23452)) ([39954b2](https://github.com/microsoft/FluidFramework/commit/39954b2b94234f7508dbd7cdaf06d1b9859ae2ba)) + + +### Bug Fixes + +* **build-cli:** Only update range for workspace:*|^|~ dependencies ([#23669](https://github.com/microsoft/FluidFramework/issues/23669)) ([fe80bd8](https://github.com/microsoft/FluidFramework/commit/fe80bd8fb11566fa21341bd798c54612b80dc068)) +* **build-cli:** Update promptToGenerateReleaseNotes to use non-deprecated flag ([#23482](https://github.com/microsoft/FluidFramework/issues/23482)) ([c55eaac](https://github.com/microsoft/FluidFramework/commit/c55eaac80d2a931ce5cfd49b29eea0376bf40301)) +* **generate:releaseNotes:** Include changesets with no packages in release notes ([#23273](https://github.com/microsoft/FluidFramework/issues/23273)) ([8e95ada](https://github.com/microsoft/FluidFramework/commit/8e95ada420fb45e0f3ec9974c96efa0fc7a78954)) + +## [0.51.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.50.0...build-tools_v0.51.0) (2025-12-11) + + +### ⚠ BREAKING CHANGES + +* **build-tools:** was to remove support for node<18, so I don't expect +issues. + +### Features + +* **build-infrastructure:** Add default implementations for core interfaces ([#22865](https://github.com/microsoft/FluidFramework/issues/22865)) ([199b9d0](https://github.com/microsoft/FluidFramework/commit/199b9d051239d8dba8215153e565c2cadbc1ecef)) +* **build-tools:** Add build-infrastructure package ([#22853](https://github.com/microsoft/FluidFramework/issues/22853)) ([b8e887e](https://github.com/microsoft/FluidFramework/commit/b8e887ead4e4a10c537e12fbe43d66ea83f7e25a)) +* **build-tools:** Add generate:node10Entrypoints command ([#22937](https://github.com/microsoft/FluidFramework/issues/22937)) ([533de79](https://github.com/microsoft/FluidFramework/commit/533de791802eaa0eb0b55f8a222d38e9a0822741)) + + +### Bug Fixes + +* **build-tools:** Run install with `--no-frozen-lockfile` ([#22814](https://github.com/microsoft/FluidFramework/issues/22814)) ([0334d00](https://github.com/microsoft/FluidFramework/commit/0334d003b0e4876e4d3925002c863eeaa78177fb)) +* **fluid-build:** Load default config when no config is found ([#22825](https://github.com/microsoft/FluidFramework/issues/22825)) ([8884365](https://github.com/microsoft/FluidFramework/commit/88843657f4be9fa1fa4fe5e0370b6f120ee3b090)) +* **release:** Check release notes and changelog generation in release tool ([#22811](https://github.com/microsoft/FluidFramework/issues/22811)) ([2d98e6c](https://github.com/microsoft/FluidFramework/commit/2d98e6cc681ac39786510e659f62fa7606a1edff)) + + +### Build System + +* **build-tools:** Upgrade danger to 12.x ([#22904](https://github.com/microsoft/FluidFramework/issues/22904)) ([0ec024d](https://github.com/microsoft/FluidFramework/commit/0ec024d3669adc4d75afd24daae9017593153db2)) + + ## [0.50.0](https://github.com/microsoft/FluidFramework/compare/build-tools_v0.49.0...build-tools_v0.50.0) (2024-11-04) diff --git a/build-tools/DEV.md b/build-tools/DEV.md new file mode 100644 index 000000000000..3144587a58a8 --- /dev/null +++ b/build-tools/DEV.md @@ -0,0 +1,132 @@ +# Build Tools Development Guide + +## Dependencies + +This document tracks dependencies that cannot be upgraded to their latest major versions due to technical limitations. + +### Dependencies Blocked from Major Version Upgrades + +The following dependencies are pinned to older major versions because newer versions are incompatible with the current CommonJS-based codebase. Most of these packages have migrated to ESM-only in their latest versions. + +#### ESM-Only Dependencies (Cannot upgrade until build-tools migrates to ESM) + +1. **execa** - Pinned to `^5.x` + - Latest: `^9.x` + - Highest compatible: `^5.x` (v6+ is ESM-only) + - Issue: Version 6+ is ESM-only and removed default export + - Error: `Module has no default export` and `Module has no exported member 'command'` + - Used in: `build-cli`, `build-infrastructure` + +2. **globby** - Pinned to `^11.x` + - Latest: `^16.x` + - Highest compatible: `^11.x` (v12+ is ESM-only) + - Issue: Version 12+ is ESM-only and removed default export + - Error: `Module has no default export` + - Used in: `build-cli`, `build-tools` + +3. **glob** - Pinned to `^7.x` + - Latest: `^11.x` + - Issue: Version 8+ rewrote the API and is ESM-only + - Error: `Cannot find name 'IOptions'` and `Property 'default' does not exist` + - Used in: `build-tools` + +4. **multimatch** - Pinned to `^5.x` + - Latest: `^7.x` + - Issue: Version 6+ is ESM-only + - Error: `The current file is a CommonJS module... however, the referenced file is an ECMAScript module` + - Used in: `build-tools` + +5. **picospinner** - Pinned to `^2.x` + - Latest: `^3.x` + - Issue: Version 3 is ESM-only + - Error: `however, the referenced file is an ECMAScript module and cannot be imported with 'require'` + - Used in: `build-tools` + +6. **read-pkg-up** - Pinned to `^7.x` + - Latest: `^11.x` + - Highest compatible: `^7.x` (v8+ has transitive dependency issues with type-fest) + - Issue: Version 8+ is ESM-only, also pulls in incompatible type-fest versions + - Error: `The requested module 'read-pkg-up' does not provide an export named 'default'` + - Used in: `build-cli` + +7. **replace-in-file** - Pinned to `^7.x` + - Latest: `^8.x` + - Issue: Version 8 is ESM-only + - Error: `The requested module 'replace-in-file' does not provide an export named 'default'` + - Used in: `build-cli` + +8. **date-fns** - Upgraded to `^3.x` ✅ + - Latest: `^4.x` + - Highest compatible: `^3.x` (v4+ is ESM-only) + - Issue: Version 4+ is ESM-only + - Used in: `build-cli`, `build-tools` + - **Note**: Successfully upgraded to v3 for newer features while maintaining CommonJS compatibility + +9. **@manypkg/get-packages** - Pinned to `^2.x` + - Latest: `^3.x` + - Issue: Version 3 is ESM-only + - Error: `however, the referenced file is an ECMAScript module and cannot be imported with 'require'` + - Used in: `build-infrastructure`, `build-tools` + +10. **detect-indent** - Pinned to `^6.x` + - Latest: `^7.x` + - Issue: Version 7 is ESM-only + - Error: `however, the referenced file is an ECMAScript module and cannot be imported with 'require'` + - Used in: `build-infrastructure`, `build-tools` + +11. **type-fest** - Pinned to `^2.x` + - Latest: `^4.x` + - Highest compatible: `^2.x` (v3+ is ESM-only) + - Issue: Version 3+ is ESM-only + - Error: `The current file is a CommonJS module... however, the referenced file is an ECMAScript module and cannot be imported with 'require'` + - Used in: `build-cli`, `build-infrastructure`, `build-tools` + - Note: v5+ also deprecated the `Opaque` type in favor of `Tagged` + +#### Type Compatibility Issues + +12. **@types/minimatch** - Pinned to `~5.1.2` for `@types/glob` dependency (via pnpm override) + - Latest: `^6.x` + - Issue: `@types/glob@7.x` uses `minimatch.IOptions` and `minimatch.IMinimatch` interfaces that were removed in `@types/minimatch@6.x` + - Dependency chain: `sort-package-json@1.57.0 → globby@10.0.0 → @types/glob@7.2.0 → @types/minimatch@6.0.0` + - Error: `Namespace has no exported member 'IOptions'` and `has no exported member named 'IMinimatch'` + - Solution: pnpm override `@types/glob>@types/minimatch@~5.1.2` only affects the @types/glob dependency chain + - Note: Targeted override allows rest of codebase to use modern minimatch/types while maintaining compatibility for glob types + +13. **typescript** - Pinned to `~5.4.5` + - Latest: `~5.7.x` + - Issue: Version 5.9+ has stricter type checking that exposes issues with @octokit dependencies + - Error: `Cannot find name 'ErrorOptions'` + - Used in: `build-cli` (devDependency) + +14. **ts-morph** - Pinned to `^22.x` + - Latest: `^27.x` + - Issue: Version 27+ requires newer TypeScript lib types + - Error: `Cannot find name 'MapIterator'` + - Used in: `build-cli` + +15. **azure-devops-node-api** - Pinned to `^11.x` + - Latest: `^15.x` + - Issue: Version 15 has incompatible type definitions and breaks bundle size analysis tools + - Error: `Types have separate declarations of a private property` and `Type is missing properties` + - Used in: `build-cli`, `bundle-size-tools` + - Note: Pinned at `^11.2.0` to maintain compatibility; upgrade blocked until type issues resolved + +#### API/Structure Breaking Changes + +16. **eslint** - Pinned to `~8.57.0` + - Latest: `~9.x` + - Issue: Version 9 uses flat config system incompatible with existing configuration + - Error: `ESLint configuration is invalid: Unexpected top-level property "__esModule"` + - Used in: `build-cli` (devDependency) + +17. **eslint-config-oclif** - Pinned to `^5.x` + - Latest: `^6.x` + - Issue: Version 6 requires ESLint 9 + - Used in: `build-cli`, `version-tools` (devDependency) + +18. **npm-check-updates** - Pinned to `^16.x` + - Latest: `^19.x` + - Highest compatible: `^16.x` (v17+ changed internal module structure) + - Issue: Version 17+ changed internal module structure and removed exported types + - Error: `Cannot find module 'npm-check-updates/build/src/types/IndexType.js'` and type errors + - Used in: `build-cli` diff --git a/build-tools/biome.jsonc b/build-tools/biome.jsonc index d6a00e2ceb43..e26fdeebd725 100644 --- a/build-tools/biome.jsonc +++ b/build-tools/biome.jsonc @@ -8,6 +8,9 @@ "enabled": true }, "files": { - "ignore": ["packages/build-tools/src/test/data/biome/empty.jsonc"] + "ignore": [ + "packages/build-tools/src/test/data/biome/empty.jsonc", + "packages/build-tools/src/test/data/biome2/**" + ] } } diff --git a/build-tools/package.json b/build-tools/package.json index 8c6aeb6a5d47..b2b6f2899cab 100644 --- a/build-tools/package.json +++ b/build-tools/package.json @@ -1,6 +1,6 @@ { "name": "build-tools-release-group-root", - "version": "0.61.0", + "version": "0.63.0", "private": true, "homepage": "https://fluidframework.com", "repository": { @@ -71,32 +71,32 @@ "temp-directory": "nyc/.nyc_output" }, "devDependencies": { - "@biomejs/biome": "~1.9.3", - "@commitlint/cli": "^17.8.1", - "@commitlint/config-conventional": "^17.8.1", - "@commitlint/cz-commitlint": "^17.8.1", + "@biomejs/biome": "~1.9.4", + "@commitlint/cli": "^20.1.0", + "@commitlint/config-conventional": "^20.0.0", + "@commitlint/cz-commitlint": "^20.1.0", "@fluid-tools/build-cli": "~0.60.0", "@fluidframework/build-common": "^2.0.3", "@fluidframework/build-tools": "~0.60.0", - "@microsoft/api-extractor": "^7.52.11", + "@microsoft/api-extractor": "^7.55.1", "c8": "^10.1.3", "commitizen": "^4.3.1", - "concurrently": "^8.2.2", - "conventional-changelog-cli": "^2.2.2", - "conventional-changelog-conventionalcommits": "^5.0.0", + "concurrently": "^9.2.1", + "conventional-changelog-cli": "^5.0.0", + "conventional-changelog-conventionalcommits": "^9.1.0", "copyfiles": "^2.4.1", "cz-conventional-changelog": "^3.3.0", - "cz-customizable": "^7.2.1", + "cz-customizable": "^7.5.1", "eslint": "~8.57.0", - "inquirer": "^8.2.6", - "rimraf": "^4.4.1", + "inquirer": "^9.3.7", + "rimraf": "^6.1.2", "run-script-os": "^1.1.6", - "syncpack": "^13.0.2", + "syncpack": "^13.0.4", "typescript": "~5.4.5" }, "packageManager": "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d", "engines": { - "node": ">=20.15.1" + "node": ">=20.19.0" }, "dependenciesComments": { "@fluidframework/build-tools": "Provides fluid-build which is used by the `build:fast` script. To allow this to work when the workspace version of build-tools has not been built yet, a prepackaged version is depended on. If this self-dependency becomes problematic, the `build` script can be used which does not require it." @@ -138,7 +138,8 @@ ], "peerDependencyRules": { "allowedVersions": { - "eslint": "8.51.0" + "eslint": "8.51.0", + "@typescript-eslint/parser": "6.21.0" }, "ignoreMissing": [ "@types/node", @@ -147,16 +148,20 @@ }, "overrideComments": [ "oclif includes some AWS-related features, but we don't use them, so we override those dependencies with empty packages. This helps reduce lockfile churn since the deps release very frequently.", - "@types/node: To avoid duplicating the oclif package and adding a bunch of dependencies, force @types/node to a single version. For some reason version 22.8.0 can't be overridden, so use that to ensure a single version" + "@types/node: To avoid duplicating the oclif package and adding a bunch of dependencies, force @types/node to a single version. For some reason version 22.8.0 can't be overridden, so use that to ensure a single version", + "@types/minimatch: @types/glob@7.x uses minimatch.IOptions and minimatch.IMinimatch interfaces. Force @types/minimatch@5 which includes these legacy type definitions.", + "mdast-util-gfm-footnote: mdast-util-gfm@3.1.0 has a type definition bug where it imports ToMarkdownOptions from mdast-util-gfm-footnote, but version 2.0.0 doesn't export it. Override to 2.1.0 which includes the missing export." ], "overrides": { - "@types/node": "^22.8.0", + "@types/glob>@types/minimatch": "~5.1.2", + "@types/node": "^22.19.1", "json5@<1.0.2": "^1.0.2", "json5@>=2.0.0 <2.2.2": "^2.2.2", - "qs": "^6.11.0", - "sharp": "^0.33.2", + "mdast-util-gfm-footnote": "^2.1.0", "oclif>@aws-sdk/client-cloudfront": "npm:empty-npm-package@1.0.0", - "oclif>@aws-sdk/client-s3": "npm:empty-npm-package@1.0.0" + "oclif>@aws-sdk/client-s3": "npm:empty-npm-package@1.0.0", + "qs": "^6.14.0", + "sharp": "^0.34.5" }, "updateConfig": { "ignoreDependencies": [ diff --git a/build-tools/packages/build-cli/.eslintrc.cjs b/build-tools/packages/build-cli/.eslintrc.cjs index e4df8a59f869..a7ebba4c7108 100644 --- a/build-tools/packages/build-cli/.eslintrc.cjs +++ b/build-tools/packages/build-cli/.eslintrc.cjs @@ -26,15 +26,15 @@ module.exports = { "object-shorthand": "off", // This package is exclusively used in a Node.js context - "import/no-nodejs-modules": "off", + "import-x/no-nodejs-modules": "off", // oclif uses default exports for commands - "import/no-default-export": "off", + "import-x/no-default-export": "off", // Set to warn because we're not ready to enforce this rule for much of build-cli yet. It is enabled for new code. - "import/no-deprecated": "warn", + "import-x/no-deprecated": "warn", - "import/no-internal-modules": [ + "import-x/no-internal-modules": [ "error", { allow: [ @@ -49,11 +49,10 @@ module.exports = { // These are all excluded because they're "submodules" used for organization. // AB#8118 tracks removing the barrel files and importing directly from the submodules. - "**/library/index.js", - "**/library/githubRest.js", - "**/handlers/index.js", - "**/machines/index.js", - "**/repoPolicyCheck/index.js", + "**/library/**", + "**/handlers/**", + "**/machines/**", + "**/repoPolicyCheck/**", "**/azureDevops/**", "**/codeCoverage/**", "azure-devops-node-api/**", @@ -108,7 +107,7 @@ module.exports = { files: ["*.spec.ts", "src/test/**"], rules: { // Test files can import from anywhere - "import/no-internal-modules": "off", + "import-x/no-internal-modules": "off", }, }, { @@ -116,7 +115,7 @@ module.exports = { files: ["src/**/vnext/**"], rules: { // Set to error since code using build-infrastructure APIs should not need to use any deprecated APIs. - "import/no-deprecated": "error", + "import-x/no-deprecated": "error", }, }, ], diff --git a/build-tools/packages/build-cli/docs/autocomplete.md b/build-tools/packages/build-cli/docs/autocomplete.md index 33e448408e9c..e09526308de4 100644 --- a/build-tools/packages/build-cli/docs/autocomplete.md +++ b/build-tools/packages/build-cli/docs/autocomplete.md @@ -14,7 +14,7 @@ USAGE $ flub autocomplete [SHELL] [-r] ARGUMENTS - SHELL (zsh|bash|powershell) Shell type + [SHELL] (zsh|bash|powershell) Shell type FLAGS -r, --refresh-cache Refresh cache (ignores displaying instructions) @@ -34,4 +34,4 @@ EXAMPLES $ flub autocomplete --refresh-cache ``` -_See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.7/src/commands/autocomplete/index.ts)_ +_See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.39/src/commands/autocomplete/index.ts)_ diff --git a/build-tools/packages/build-cli/docs/bump.md b/build-tools/packages/build-cli/docs/bump.md index 1641582efe36..ff5983ad61f5 100644 --- a/build-tools/packages/build-cli/docs/bump.md +++ b/build-tools/packages/build-cli/docs/bump.md @@ -39,11 +39,11 @@ FLAGS --[no-]install Update lockfiles by running 'npm install' automatically. --scheme=