From afe53f03ec3569452057aa0c421cb487e99f404d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 10 Mar 2026 10:50:34 +0100 Subject: [PATCH 01/12] chore: rename package to `@fingerprint/cloudfront-proxy` in `package.json` --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7a9369c1..c59ff825 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@fingerprintjs/fingerprint-pro-cloudfront-lambda-function", + "name": "@fingerprint/cloudfront-proxy", "version": "2.1.1", "description": "Fingerprint Pro CloudFront lambda@edge function", "author": "FingerprintJS, Inc (https://fingerprint.com)", From ff1b644674836fcb5b5de2303d94b084f8f1e31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 10 Mar 2026 10:50:42 +0100 Subject: [PATCH 02/12] build: migrate to changesets --- .changeset/cold-needles-warn.md | 5 + .changeset/config.json | 20 + .changeset/pre.json | 10 + .github/workflows/analyze-commits.yml | 8 + .github/workflows/publish-lambda.yml | 48 +- .github/workflows/release.yml | 12 +- .../workflows/terraform-e2e-tests-on-dev.yml | 14 +- .node-version | 2 +- .releaserc | 61 --- e2e/infra/terraform/cloudfront.tf | 4 +- e2e/tests/package.json | 1 + package.json | 3 + pnpm-lock.yaml | 441 +++++++++++++++++- pnpm-workspace.yaml | 5 +- scripts/uploadReleaseAsset.cjs | 48 ++ 15 files changed, 600 insertions(+), 82 deletions(-) create mode 100644 .changeset/cold-needles-warn.md create mode 100644 .changeset/config.json create mode 100644 .changeset/pre.json delete mode 100644 .releaserc create mode 100644 scripts/uploadReleaseAsset.cjs diff --git a/.changeset/cold-needles-warn.md b/.changeset/cold-needles-warn.md new file mode 100644 index 00000000..e7cf7804 --- /dev/null +++ b/.changeset/cold-needles-warn.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/cloudfront-proxy': major +--- + +Add support for API V4 diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..b7772048 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.3/schema.json", + "changelog": [ + "@fingerprintjs/changesets-changelog-format", + { + "repo": "fingerprintjs/cloudfront-proxy" + } + ], + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "rc", + "updateInternalDependencies": "patch", + "ignore": ["website", "e2e-tests"], + "privatePackages": { + "version": true, + "tag": true + } +} diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..0e726467 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,10 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "@fingerprint/cloudfront-proxy": "2.1.1", + "e2e-tests": "0.0.0", + "website": "0.0.0" + }, + "changesets": [] +} diff --git a/.github/workflows/analyze-commits.yml b/.github/workflows/analyze-commits.yml index 6c78cb90..9aa972d0 100644 --- a/.github/workflows/analyze-commits.yml +++ b/.github/workflows/analyze-commits.yml @@ -9,3 +9,11 @@ jobs: analyze-commits: name: Generate docs and coverage report uses: fingerprintjs/dx-team-toolkit/.github/workflows/analyze-commits.yml@v1 + with: + previewNotes: false + + preview-changeset: + name: Preview changeset + uses: fingerprintjs/dx-team-toolkit/.github/workflows/preview-changeset-release.yml@v1 + with: + pr-title: ${{ github.event.pull_request.title }} diff --git a/.github/workflows/publish-lambda.yml b/.github/workflows/publish-lambda.yml index d2786d21..26d148c1 100644 --- a/.github/workflows/publish-lambda.yml +++ b/.github/workflows/publish-lambda.yml @@ -12,9 +12,45 @@ permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout jobs: + upload-assets: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: .node-version + + - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 + with: + version: 9 + + - run: pnpm install + + - name: Build release + run: pnpm build:release + + - name: Upload built worker bundle to the Release assets + uses: actions/github-script@v7 + env: + ASSET_PATH: lambda_latest.zip,mgmt_lambda_latest.zip + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const script = require('./scripts/uploadReleaseAsset.cjs') + script( { github, context } ) + e2e-tests: name: Run E2E tests on release artifact runs-on: ubuntu-latest + needs: upload-assets outputs: lambda_sha: ${{ steps.sha.outputs.lambda_sha }} mgmt_lambda_sha: ${{ steps.sha.outputs.mgmt_lambda_sha }} @@ -29,9 +65,10 @@ jobs: role-session-name: GitHub_to_AWS_via_FederatedOIDC aws-region: ${{ env.AWS_IAM_AUTH_REGION }} - - uses: actions/setup-node@v4 + - name: Setup Node + uses: actions/setup-node@v4 with: - node-version: 24 + node-version-file: .node-version - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 with: @@ -85,14 +122,15 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node + uses: actions/setup-node@v4 with: - node-version: 24 + node-version-file: .node-version - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 with: version: 9 - + - run: pnpm install - name: Configure AWS credentials from dev account diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8841dc3e..559250a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,11 +6,17 @@ on: - rc jobs: - build-and-release: + release: name: 'Build project, run CI checks and publish new release' - uses: fingerprintjs/dx-team-toolkit/.github/workflows/release-typescript-project.yml@v1 + uses: fingerprintjs/dx-team-toolkit/.github/workflows/release-sdk-changesets.yml@v1 with: - nodeVersion: 24 appId: ${{ vars.APP_ID }} + runnerAppId: ${{ vars.RUNNER_APP_ID }} + version-command: pnpm changeset:version + publish-command: pnpm changeset:publish + language: node + language-version: 24 + prepare-command: pnpm build:release secrets: APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} + RUNNER_APP_PRIVATE_KEY: ${{ secrets.RUNNER_APP_PRIVATE_KEY }} diff --git a/.github/workflows/terraform-e2e-tests-on-dev.yml b/.github/workflows/terraform-e2e-tests-on-dev.yml index 341fdd2d..fd2b9918 100644 --- a/.github/workflows/terraform-e2e-tests-on-dev.yml +++ b/.github/workflows/terraform-e2e-tests-on-dev.yml @@ -23,14 +23,15 @@ jobs: role-session-name: GitHub_to_AWS_via_FederatedOIDC aws-region: ${{ env.AWS_IAM_AUTH_REGION }} - - uses: actions/setup-node@v4 + - name: Setup Node + uses: actions/setup-node@v4 with: - node-version: 24 + node-version-file: .node-version - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 with: version: 9 - + - run: pnpm install - run: pnpm exec playwright install @@ -76,9 +77,10 @@ jobs: role-session-name: GitHub_to_AWS_via_FederatedOIDC aws-region: ${{ env.AWS_IAM_AUTH_REGION }} - - uses: actions/setup-node@v4 + - name: Setup Node + uses: actions/setup-node@v4 with: - node-version: 24 + node-version-file: .node-version - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 with: @@ -86,7 +88,7 @@ jobs: - run: pnpm install && npm install ts-node -g - - run: pnpm build && bash scripts/preparePackage.sh + - run: pnpm build:release env: FPCDN: ${{ secrets.MOCK_WARDEN_URL }} INGRESS_API: ${{ secrets.MOCK_WARDEN_URL }} diff --git a/.node-version b/.node-version index 2edeafb0..cabf43b5 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20 \ No newline at end of file +24 \ No newline at end of file diff --git a/.releaserc b/.releaserc deleted file mode 100644 index 26fdc4e7..00000000 --- a/.releaserc +++ /dev/null @@ -1,61 +0,0 @@ -{ - "branches": [ - "main", - { - "name": "rc", - "prerelease": true - } - ], - "plugins": [ - [ - "@semantic-release/commit-analyzer", - { - "config": "@fingerprintjs/conventional-changelog-dx-team", - "releaseRules": "@fingerprintjs/conventional-changelog-dx-team/release-rules" - } - ], - [ - "@semantic-release/release-notes-generator", - { - "config": "@fingerprintjs/conventional-changelog-dx-team" - } - ], - "@semantic-release/changelog", - [ - "@semantic-release/npm", - { - "npmPublish": false - } - ], - [ - "@semantic-release/exec", - { - "prepareCmd": "pnpm build", - "publishCmd": "./scripts/preparePackage.sh" - } - ], - [ - "@semantic-release/git", - { - "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}", - "assets": [ - "CHANGELOG.md", - "package.json" - ] - } - ], - [ - "@semantic-release/github", - { - "assets": [ - { - "path": "lambda_latest.zip" - }, - { - "path": "mgmt_lambda_latest.zip" - } - ] - } - ] - ] -} diff --git a/e2e/infra/terraform/cloudfront.tf b/e2e/infra/terraform/cloudfront.tf index 021aca31..376d7b4a 100644 --- a/e2e/infra/terraform/cloudfront.tf +++ b/e2e/infra/terraform/cloudfront.tf @@ -49,7 +49,7 @@ resource "aws_cloudfront_distribution" "with_secret" { } ordered_cache_behavior { - path_pattern = "${var.fpjs_behavior_path}/*" + path_pattern = "${var.fpjs_behavior_path}*" allowed_methods = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"] cached_methods = ["GET", "HEAD"] @@ -132,7 +132,7 @@ resource "aws_cloudfront_distribution" "with_headers" { } ordered_cache_behavior { - path_pattern = "${var.fpjs_behavior_path}/*" + path_pattern = "${var.fpjs_behavior_path}*" allowed_methods = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"] cached_methods = ["GET", "HEAD"] diff --git a/e2e/tests/package.json b/e2e/tests/package.json index 42f3498b..69d0d889 100644 --- a/e2e/tests/package.json +++ b/e2e/tests/package.json @@ -1,5 +1,6 @@ { "name": "e2e-tests", + "version": "0.0.0", "license": "MIT", "type": "commonjs", "devDependencies": { diff --git a/package.json b/package.json index c59ff825..2ba7f837 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "prepare": "husky", "build": "rimraf dist && NODE_OPTIONS=\"--max_old_space_size=4098\" rollup -c rollup.config.js --bundleConfigAsCjs && cp cloudformation/template.yml dist/template.yml", + "build:release": "pnpm build && pnpm prepare-package", "lint": "eslint --ext .js,.ts --ignore-path .gitignore --max-warnings 0 .", "lint:fix": "pnpm lint --fix", "test": "jest", @@ -33,7 +34,9 @@ }, "devDependencies": { "@aws-sdk/client-s3": "^3.832.0", + "@changesets/cli": "^2.30.0", "@commitlint/cli": "^19.8.1", + "@fingerprintjs/changesets-changelog-format": "^0.2.0", "@fingerprintjs/commit-lint-dx-team": "^0.0.2", "@fingerprintjs/conventional-changelog-dx-team": "^0.1.0", "@fingerprintjs/eslint-config-dx-team": "^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 735c9052..3b141cd0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,9 +24,15 @@ importers: '@aws-sdk/client-s3': specifier: ^3.832.0 version: 3.832.0 + '@changesets/cli': + specifier: ^2.30.0 + version: 2.30.0(@types/node@20.19.1) '@commitlint/cli': specifier: ^19.8.1 version: 19.8.1(@types/node@20.19.1)(typescript@5.8.3) + '@fingerprintjs/changesets-changelog-format': + specifier: ^0.2.0 + version: 0.2.0 '@fingerprintjs/commit-lint-dx-team': specifier: ^0.0.2 version: 0.0.2 @@ -563,6 +569,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -578,6 +588,61 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@changesets/apply-release-plan@7.1.0': + resolution: {integrity: sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==} + + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.30.0': + resolution: {integrity: sha512-5D3Nk2JPqMI1wK25pEymeWRSlSMdo5QOGlyfrKg0AOufrUcjEE3RQgaCpHoBiM31CSNrtSgdJ0U6zL1rLDDfBA==} + hasBin: true + + '@changesets/config@3.1.3': + resolution: {integrity: sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-release-plan@4.0.15': + resolution: {integrity: sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@commitlint/cli@19.8.1': resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} engines: {node: '>=v18'} @@ -838,6 +903,9 @@ packages: '@fingerprint/agent@4.0.0': resolution: {integrity: sha512-GdFdBeaDqLc3hVQLcxPwckk+1217raR/ouxBkGXSykxAswl1xxrt6GLaR93cKY8ehjp7ZFYSjSu4aLKUesgvIg==} + '@fingerprintjs/changesets-changelog-format@0.2.0': + resolution: {integrity: sha512-1jI+J1r8OKUtjlFfQW4bmQ8u4E1097zPaKw5fUCgAcahLPgwW4Ae+Keoc253CSyyaKgTu2v/wniUGchmPaXAsg==} + '@fingerprintjs/commit-lint-dx-team@0.0.2': resolution: {integrity: sha512-8FDlPI+KhnWsfbf4Lo/TERdiHl9daMhnZb4MsV5nhrta13XXGRSxOvLPUnFmZA0FsxR4HHzpszlr7ZSoPVaLSg==} @@ -871,6 +939,15 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} deprecated: Use @eslint/object-schema instead + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -1006,6 +1083,12 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1654,6 +1737,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.19.1': resolution: {integrity: sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==} @@ -1798,6 +1884,10 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1920,6 +2010,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2000,6 +2094,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -2297,6 +2394,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -2439,6 +2540,9 @@ packages: resolution: {integrity: sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -2536,6 +2640,14 @@ packages: resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} engines: {node: '>= 6'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -2600,11 +2712,12 @@ packages: glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} @@ -2679,6 +2792,10 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + human-id@4.1.3: + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} + hasBin: true + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2696,6 +2813,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2804,6 +2925,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} @@ -3044,6 +3169,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -3078,6 +3207,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -3277,6 +3409,10 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -3341,6 +3477,13 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3365,6 +3508,10 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -3372,6 +3519,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + package-name-regex@2.0.6: resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} engines: {node: '>=12'} @@ -3437,6 +3587,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -3467,6 +3621,11 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.2.4: resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} engines: {node: '>=14'} @@ -3499,6 +3658,9 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -3508,6 +3670,10 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -3672,6 +3838,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + spdx-compare@1.0.0: resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} @@ -3735,6 +3904,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} @@ -3776,6 +3949,10 @@ packages: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + terser@5.28.1: resolution: {integrity: sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==} engines: {node: '>=10'} @@ -3896,6 +4073,10 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -3984,6 +4165,7 @@ packages: whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} @@ -5150,6 +5332,8 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.28.6': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -5175,6 +5359,149 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@changesets/apply-release-plan@7.1.0': + dependencies: + '@changesets/config': 3.1.3 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.2 + + '@changesets/assemble-release-plan@6.0.9': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.2 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.30.0(@types/node@20.19.1)': + dependencies: + '@changesets/apply-release-plan': 7.1.0 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.15 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@20.19.1) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.2 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' + + '@changesets/config@3.1.3': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.3': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.2 + + '@changesets/get-release-plan@4.0.15': + dependencies: + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.3 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.3': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.1.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.7': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.3 + prettier: 2.8.8 + '@commitlint/cli@19.8.1(@types/node@20.19.1)(typescript@5.8.3)': dependencies: '@commitlint/format': 19.8.1 @@ -5426,6 +5753,10 @@ snapshots: '@fingerprint/agent@4.0.0': {} + '@fingerprintjs/changesets-changelog-format@0.2.0': + dependencies: + '@changesets/types': 6.1.0 + '@fingerprintjs/commit-lint-dx-team@0.0.2': dependencies: '@commitlint/config-conventional': 17.8.1 @@ -5469,6 +5800,13 @@ snapshots: '@humanwhocodes/object-schema@2.0.2': {} + '@inquirer/external-editor@1.0.3(@types/node@20.19.1)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 20.19.1 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -5727,6 +6065,22 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.28.6 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.28.6 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6579,6 +6933,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/node@12.20.55': {} + '@types/node@20.19.1': dependencies: undici-types: 6.21.0 @@ -6755,6 +7111,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -6912,6 +7270,10 @@ snapshots: base64-js@1.5.1: {} + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -6990,6 +7352,8 @@ snapshots: chardet@0.7.0: {} + chardet@2.1.1: {} + ci-info@3.9.0: {} ci-info@4.2.0: {} @@ -7267,6 +7631,11 @@ snapshots: emoji-regex@9.2.2: {} + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + entities@6.0.1: {} env-paths@2.2.1: {} @@ -7459,6 +7828,8 @@ snapshots: jest-mock: 30.0.2 jest-util: 30.0.2 + extendable-error@0.1.7: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -7570,6 +7941,18 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 @@ -7725,6 +8108,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-id@4.1.3: {} + human-signals@2.1.0: {} husky@9.1.7: {} @@ -7737,6 +8122,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.1: {} @@ -7832,6 +8221,10 @@ snapshots: is-stream@2.0.1: {} + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 @@ -8303,6 +8696,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + jsdom@20.0.3: dependencies: abab: 2.0.6 @@ -8350,6 +8747,10 @@ snapshots: json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -8532,6 +8933,8 @@ snapshots: moment@2.30.1: {} + mri@1.2.0: {} + ms@2.1.2: {} ms@2.1.3: {} @@ -8599,6 +9002,12 @@ snapshots: os-tmpdir@1.0.2: {} + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -8623,10 +9032,16 @@ snapshots: dependencies: p-limit: 4.0.0 + p-map@2.1.0: {} + p-try@2.2.0: {} package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.11 + package-name-regex@2.0.6: {} parent-module@1.0.1: @@ -8673,6 +9088,8 @@ snapshots: pidtree@0.6.0: {} + pify@4.0.1: {} + pirates@4.0.7: {} pkg-dir@4.2.0: @@ -8699,6 +9116,8 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier@2.8.8: {} + prettier@3.2.4: {} prettier@3.5.3: {} @@ -8728,12 +9147,21 @@ snapshots: pure-rand@6.1.0: {} + quansync@0.2.11: {} + querystringify@2.2.0: {} queue-microtask@1.2.3: {} react-is@18.3.1: {} + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -8912,6 +9340,11 @@ snapshots: source-map@0.6.1: {} + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + spdx-compare@1.0.0: dependencies: array-find-index: 1.0.2 @@ -8984,6 +9417,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom@3.0.0: {} + strip-bom@4.0.0: {} strip-final-newline@2.0.0: {} @@ -9015,6 +9450,8 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 + term-size@2.2.1: {} + terser@5.28.1: dependencies: '@jridgewell/source-map': 0.3.6 @@ -9112,6 +9549,8 @@ snapshots: unicorn-magic@0.1.0: {} + universalify@0.1.2: {} + universalify@0.2.0: {} universalify@2.0.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 06a51f51..5769110e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,3 @@ packages: - - "proxy/*" - - "mgmt-lambda/*" - - "e2e/*" \ No newline at end of file + - "e2e/*" + - ./ \ No newline at end of file diff --git a/scripts/uploadReleaseAsset.cjs b/scripts/uploadReleaseAsset.cjs new file mode 100644 index 00000000..ee650b8f --- /dev/null +++ b/scripts/uploadReleaseAsset.cjs @@ -0,0 +1,48 @@ +const fs = require('fs') +const path = require('path') + +module.exports = async ({ context, github }) => { + const assetPaths = process.env.ASSET_PATH.split(',').map((p) => p.trim()) + + if (assetPaths.some((p) => !fs.existsSync(p))) { + throw new Error(`Asset not found: ${assetPaths}`) + } + + const owner = context.repo.owner + const repo = context.repo.repo + const releaseId = context.payload.release.id + const name = assetPaths.split('/').pop() + + for (const assetPath of assetPaths) { + const data = fs.readFileSync(assetPath) + const assetName = path.basename(assetPath) + + // Delete existing asset with the same name (if any) + const { data: assets } = await github.request('GET /repos/{owner}/{repo}/releases/{release_id}/assets', { + owner, + repo, + release_id: releaseId, + }) + const existing = assets.find((a) => a.name === name) + if (existing) { + await github.request('DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}', { + owner, + repo, + asset_id: existing.id, + }) + } + + // Upload asset (use uploads.github.com via the provided upload_url) + const uploadUrl = context.payload.release.upload_url // https://uploads.github.com/.../assets{?name,label} + await github.request({ + method: 'POST', + url: uploadUrl, + headers: { + 'content-type': 'application/javascript', + 'content-length': data.length, + }, + name: assetName, + data, + }) + } +} From 91fde145c19361b7fc0810c283da237346b18f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 10 Mar 2026 15:03:23 +0100 Subject: [PATCH 03/12] chore: adjust changeset to mark update as minor --- .changeset/cold-needles-warn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/cold-needles-warn.md b/.changeset/cold-needles-warn.md index e7cf7804..16cd4dfc 100644 --- a/.changeset/cold-needles-warn.md +++ b/.changeset/cold-needles-warn.md @@ -1,5 +1,5 @@ --- -'@fingerprint/cloudfront-proxy': major +'@fingerprint/cloudfront-proxy': minor --- Add support for API V4 From 799ca919412db006522b79c4992c38b3a3390def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 10 Mar 2026 16:29:00 +0100 Subject: [PATCH 04/12] chore: revert path pattern change --- e2e/infra/terraform/cloudfront.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/infra/terraform/cloudfront.tf b/e2e/infra/terraform/cloudfront.tf index 376d7b4a..021aca31 100644 --- a/e2e/infra/terraform/cloudfront.tf +++ b/e2e/infra/terraform/cloudfront.tf @@ -49,7 +49,7 @@ resource "aws_cloudfront_distribution" "with_secret" { } ordered_cache_behavior { - path_pattern = "${var.fpjs_behavior_path}*" + path_pattern = "${var.fpjs_behavior_path}/*" allowed_methods = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"] cached_methods = ["GET", "HEAD"] @@ -132,7 +132,7 @@ resource "aws_cloudfront_distribution" "with_headers" { } ordered_cache_behavior { - path_pattern = "${var.fpjs_behavior_path}*" + path_pattern = "${var.fpjs_behavior_path}/*" allowed_methods = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"] cached_methods = ["GET", "HEAD"] From bb818a4362c3103290d1ed6e92515d88b4f53149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Wed, 11 Mar 2026 09:58:16 +0100 Subject: [PATCH 05/12] chore: add changeset scripts to `package.json` --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ba7f837..f0ed3aa4 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,9 @@ "test": "jest", "test:coverage": "jest --coverage", "test:dts": "tsc --noEmit --isolatedModules dist/fingerprintjs-pro-cloudfront-lambda-function.d.ts", - "prepare-package": "bash ./scripts/preparePackage.sh" + "prepare-package": "bash ./scripts/preparePackage.sh", + "changeset:publish": "HUSKY=0 changeset publish", + "changeset:version": "changeset version" }, "main": "dist/fingerprintjs-pro-cloudflare-lambda-function.js", "sideEffects": false, From 19c5f444b7b63919da02795f7850af492cd9dcb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Wed, 11 Mar 2026 17:40:41 +0100 Subject: [PATCH 06/12] chore: simplify `publish-lambda` workflow by reordering and removing redundant pnpm setup steps --- .github/workflows/publish-lambda.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-lambda.yml b/.github/workflows/publish-lambda.yml index 26d148c1..90475eba 100644 --- a/.github/workflows/publish-lambda.yml +++ b/.github/workflows/publish-lambda.yml @@ -20,18 +20,15 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 + with: + version: 9 - name: Setup Node uses: actions/setup-node@v4 with: node-version-file: .node-version - - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 - with: - version: 9 - - run: pnpm install - name: Build release From d2b70b7eda54cf350acfdf2de641aa4c70bda5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Mon, 16 Mar 2026 10:41:11 +0100 Subject: [PATCH 07/12] chore: link INTER-1900 From e3eec2d3a9cb13005c9a7fbbdbf176c5cc8cfcbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Wed, 18 Mar 2026 11:18:40 +0100 Subject: [PATCH 08/12] chore: remove custom release asset upload script and simplify workflows --- .github/workflows/publish-lambda.yml | 34 +------------------- .github/workflows/release.yml | 1 + scripts/uploadReleaseAsset.cjs | 48 ---------------------------- 3 files changed, 2 insertions(+), 81 deletions(-) delete mode 100644 scripts/uploadReleaseAsset.cjs diff --git a/.github/workflows/publish-lambda.yml b/.github/workflows/publish-lambda.yml index 90475eba..10c14abb 100644 --- a/.github/workflows/publish-lambda.yml +++ b/.github/workflows/publish-lambda.yml @@ -11,39 +11,7 @@ env: permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout -jobs: - upload-assets: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@129abb77bf5884e578fcaf1f37628e41622cc371 - with: - version: 9 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version-file: .node-version - - - run: pnpm install - - - name: Build release - run: pnpm build:release - - - name: Upload built worker bundle to the Release assets - uses: actions/github-script@v7 - env: - ASSET_PATH: lambda_latest.zip,mgmt_lambda_latest.zip - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const script = require('./scripts/uploadReleaseAsset.cjs') - script( { github, context } ) - +jobs: e2e-tests: name: Run E2E tests on release artifact runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 559250a8..2d4fc002 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,6 +17,7 @@ jobs: language: node language-version: 24 prepare-command: pnpm build:release + github-release-files: 'lambda_latest.zip,mgmt_lambda_latest.zip' secrets: APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} RUNNER_APP_PRIVATE_KEY: ${{ secrets.RUNNER_APP_PRIVATE_KEY }} diff --git a/scripts/uploadReleaseAsset.cjs b/scripts/uploadReleaseAsset.cjs deleted file mode 100644 index ee650b8f..00000000 --- a/scripts/uploadReleaseAsset.cjs +++ /dev/null @@ -1,48 +0,0 @@ -const fs = require('fs') -const path = require('path') - -module.exports = async ({ context, github }) => { - const assetPaths = process.env.ASSET_PATH.split(',').map((p) => p.trim()) - - if (assetPaths.some((p) => !fs.existsSync(p))) { - throw new Error(`Asset not found: ${assetPaths}`) - } - - const owner = context.repo.owner - const repo = context.repo.repo - const releaseId = context.payload.release.id - const name = assetPaths.split('/').pop() - - for (const assetPath of assetPaths) { - const data = fs.readFileSync(assetPath) - const assetName = path.basename(assetPath) - - // Delete existing asset with the same name (if any) - const { data: assets } = await github.request('GET /repos/{owner}/{repo}/releases/{release_id}/assets', { - owner, - repo, - release_id: releaseId, - }) - const existing = assets.find((a) => a.name === name) - if (existing) { - await github.request('DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}', { - owner, - repo, - asset_id: existing.id, - }) - } - - // Upload asset (use uploads.github.com via the provided upload_url) - const uploadUrl = context.payload.release.upload_url // https://uploads.github.com/.../assets{?name,label} - await github.request({ - method: 'POST', - url: uploadUrl, - headers: { - 'content-type': 'application/javascript', - 'content-length': data.length, - }, - name: assetName, - data, - }) - } -} From 242d077b956baab0401cc6139dd9bec8e138f588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Thu, 19 Mar 2026 14:43:57 +0100 Subject: [PATCH 09/12] chore: update changeset base branch to `main` --- .changeset/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/config.json b/.changeset/config.json index b7772048..bde9fa42 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -10,7 +10,7 @@ "fixed": [], "linked": [], "access": "restricted", - "baseBranch": "rc", + "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": ["website", "e2e-tests"], "privatePackages": { From fcbdeb020672ab2cbb3608ac1a5be82c7c09f1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 24 Mar 2026 11:07:58 +0100 Subject: [PATCH 10/12] chore: update contribution guide and workflows for changeset-based publishing --- .github/workflows/release.yml | 1 - CONTRIBUTING.md | 23 +++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d4fc002..aff51506 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,6 @@ on: push: branches: - main - - rc jobs: release: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c3066ce..5fb66693 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,9 +7,8 @@ We prefer using [pnpm](https://pnpm.io/) for installing dependencies and running For proposing changes, use the standard [pull request approach](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). It's recommended to discuss fixes or new functionality in the Issues, first. -* The `main` and `rc` branches are locked for the push action. -* Releases are created from the `main` branch. If you have CloudFront Integration set up, it is running code from the `main` branch. Pull requests into the `main` branch are not accepted. -* The `rc` branch functions as a candidate for the next release. Create your pull requests into this branch. The code in `rc` must always pass the tests. +* The `main` branches are locked for the push action. +* Releases are created from the `main` branch. If you have CloudFront Integration set up, it is running code from the `main` branch. ### How to build @@ -54,10 +53,19 @@ These tests run automatically on every pull request via the [terraform-e2e-tests ### How to release a new version -Every PR should target `rc` branch first. Upon merge, if there are relevant changes a new release candidate is created. -When that happens, an automated PR is created to `main` branch, and E2E tests run against it. If the tests pass, the PR can be merged and the release is created. +We use [changesets](https://github.com/changesets/changesets) for handling release notes. If there are relevant changes, please add them to changeset via `pnpm exec changeset`. You need to run `pnpm install` before doing so. -The integration is automatically released on every push to the main branch if there are relevant changes. The workflow must be approved by one of the maintainers, first. +Every change requires a pre-release first: +```shell +pnpm exec changeset pre enter rc +``` + +When the PR is merged, the pre-release is created and E2E tests run against it. Once the tests pass, a stable release can be created: +```shell +pnpm exec changeset pre exit +``` + +The integration is automatically released on tag creation. The workflow must be approved by one of the maintainers, first. ### How to keep your integration up-to-date @@ -72,5 +80,4 @@ To achieve this, you can add your custom *host* (not URL) values to the **AWS Se ``` FPJS_CDN_URL: your.cdn.net FPJS_INGRESS_BASE_HOST: your.api.net -``` - +``` \ No newline at end of file From d1e8488bca149f472ad466f44c56f06990d31e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 24 Mar 2026 11:09:15 +0100 Subject: [PATCH 11/12] chore: rename package to `@fingerprint/aws-cloudfront-proxy` --- .changeset/cold-needles-warn.md | 2 +- .changeset/pre.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/cold-needles-warn.md b/.changeset/cold-needles-warn.md index 16cd4dfc..c75d3134 100644 --- a/.changeset/cold-needles-warn.md +++ b/.changeset/cold-needles-warn.md @@ -1,5 +1,5 @@ --- -'@fingerprint/cloudfront-proxy': minor +'@fingerprint/aws-cloudfront-proxy': minor --- Add support for API V4 diff --git a/.changeset/pre.json b/.changeset/pre.json index 0e726467..4d0e94f0 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,7 +2,7 @@ "mode": "pre", "tag": "rc", "initialVersions": { - "@fingerprint/cloudfront-proxy": "2.1.1", + "@fingerprint/aws-cloudfront-proxy": "2.1.1", "e2e-tests": "0.0.0", "website": "0.0.0" }, diff --git a/package.json b/package.json index f0ed3aa4..5c358107 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@fingerprint/cloudfront-proxy", + "name": "@fingerprint/aws-cloudfront-proxy", "version": "2.1.1", "description": "Fingerprint Pro CloudFront lambda@edge function", "author": "FingerprintJS, Inc (https://fingerprint.com)", From 72a3b4b019051b87633376544607f88bd5d551d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 24 Mar 2026 11:21:50 +0100 Subject: [PATCH 12/12] ci: update workflow name Co-authored-by: Dan McNulty <212590662+mcnulty-fp@users.noreply.github.com> --- .github/workflows/analyze-commits.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analyze-commits.yml b/.github/workflows/analyze-commits.yml index 9aa972d0..086e471b 100644 --- a/.github/workflows/analyze-commits.yml +++ b/.github/workflows/analyze-commits.yml @@ -7,7 +7,7 @@ permissions: contents: write jobs: analyze-commits: - name: Generate docs and coverage report + name: Analyze commits uses: fingerprintjs/dx-team-toolkit/.github/workflows/analyze-commits.yml@v1 with: previewNotes: false