From 534cea54e35115dc29f55220123867fa26dce7db Mon Sep 17 00:00:00 2001 From: Chase Adams Date: Mon, 18 May 2026 23:56:48 -0700 Subject: [PATCH 1/2] chore(ci): update deploy workflows --- .github/workflows/sst-gigabugs-deploy.yml | 129 ++++++++++++++-------- .github/workflows/sst-prod-deploy.yml | 120 +++++++++++++------- .github/workflows/sst-sandbox-deploy.yml | 120 +++++++++++++------- package.json | 1 - 4 files changed, 248 insertions(+), 122 deletions(-) diff --git a/.github/workflows/sst-gigabugs-deploy.yml b/.github/workflows/sst-gigabugs-deploy.yml index a5db41de95..b0e8ca8056 100644 --- a/.github/workflows/sst-gigabugs-deploy.yml +++ b/.github/workflows/sst-gigabugs-deploy.yml @@ -3,17 +3,26 @@ name: Build and Deploy Gigabugs Zero-Cache AWS SST on: push: branches: [gigabugs] + env: - # Setting an environment variable with the value of a configuration variable ECR_IMAGE_ZERO_CACHE: zero-zgigabugs AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} + jobs: - deploy: + build: runs-on: ubuntu-latest - + permissions: + contents: read + outputs: + sha: ${{ steps.pack.outputs.sha }} + zero_version: ${{ steps.pack.outputs.zero_version }} + zero_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_SYNC_PROTOCOL_VERSION }} + zero_min_supported_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false - name: Set up Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -21,60 +30,91 @@ jobs: node-version: 24.x cache: 'npm' - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ vars.AWS_DEFAULT_REGION }} - - - name: Set up QEMU for amd64 - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - if: runner.os == 'Linux' - - - name: Set up Docker for amd64 - uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2 - with: - platforms: linux/amd64 + - name: Install dependencies + run: npm ci - - name: Set up Docker - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 + - name: Build packages + run: npx turbo run build - - name: Login to Amazon ECR - run: | - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - - name: Install dependencies - run: | - npm run build-ci - name: Resolve Zero protocol versions + id: protocols run: | node --experimental-strip-types -e " import {PROTOCOL_VERSION, MIN_SERVER_SUPPORTED_SYNC_PROTOCOL} from './packages/zero-protocol/src/protocol-version.ts'; console.log('ZERO_SYNC_PROTOCOL_VERSION=' + PROTOCOL_VERSION); console.log('ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=' + MIN_SERVER_SUPPORTED_SYNC_PROTOCOL); - " >> "$GITHUB_ENV" - - name: Create package tarball - run: | - cd packages/zero - npm pack - cp rocicorp-zero-*.tgz ./pkgs/ - - name: Get Git SHA - id: git-sha - run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + " >> "$GITHUB_OUTPUT" + - name: Create package tarball + id: pack run: | + SHA="$(git rev-parse --short HEAD)" cd packages/zero npm pack - ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+${{ env.SHA }}.tgz" + ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+$SHA.tgz" + mkdir -p ./pkgs mv rocicorp-zero-*.tgz ./pkgs/$ZERO_TARBALL - echo "ZERO_VERSION=$ZERO_TARBALL" >> $GITHUB_ENV + echo "sha=$SHA" >> "$GITHUB_OUTPUT" + echo "zero_version=$ZERO_TARBALL" >> "$GITHUB_OUTPUT" + + - name: Upload package tarball + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + with: + name: zero-package-${{ steps.pack.outputs.sha }} + path: packages/zero/pkgs/${{ steps.pack.outputs.zero_version }} + if-no-files-found: error + retention-days: 1 + + deploy: + runs-on: ubuntu-latest + needs: build + permissions: + contents: read + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version: 24.x + package-manager-cache: false + + - name: Download package tarball + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 + with: + name: zero-package-${{ needs.build.outputs.sha }} + path: packages/zero/pkgs + + - name: Install deploy dependencies + working-directory: prod/sst + run: npm ci --ignore-scripts + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 + with: + role-to-assume: ${{ vars.AWS_DEPLOY_ROLE_GIGABUGS_ARN }} + role-session-name: github-actions-zero-gigabugs-deploy + aws-region: ${{ vars.AWS_DEFAULT_REGION }} + + - name: Login to Amazon ECR + run: | + aws ecr get-login-password --region "$AWS_DEFAULT_REGION" | docker login --username AWS --password-stdin ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + - name: Build and push Docker image + env: + ZERO_VERSION: ${{ needs.build.outputs.zero_version }} + ZERO_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_sync_protocol_version }} + ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_min_supported_sync_protocol_version }} + SHA: ${{ needs.build.outputs.sha }} run: | cd packages/zero - docker buildx create --use - docker buildx inspect --bootstrap - docker buildx build --platform linux/amd64 --build-arg ZERO_VERSION=${{ env.ZERO_VERSION }} --build-arg ZERO_SYNC_PROTOCOL_VERSION=${{ env.ZERO_SYNC_PROTOCOL_VERSION }} --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=${{ env.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:${{ env.SHA }} -f ./Dockerfile --push . + DOCKER_BUILDKIT=1 docker build --platform linux/amd64 --build-arg ZERO_VERSION="$ZERO_VERSION" --build-arg ZERO_SYNC_PROTOCOL_VERSION="$ZERO_SYNC_PROTOCOL_VERSION" --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION="$ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION" -t ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA -f ./Dockerfile . + docker push ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA + - name: Deploy SST app env: ZERO_UPSTREAM_DB: ${{ secrets.GIGABUGS_ZERO_UPSTREAM_DB }} @@ -86,15 +126,15 @@ jobs: ZERO_AUTH_JWK: ${{ secrets.GIGABUGS_ZERO_AUTH_JWK }} ZERO_APP_PUBLICATIONS: ${{ vars.GIGABUGS_ZERO_APP_PUBLICATIONS }} AWS_REGION: ${{ vars.AWS_DEFAULT_REGION }} - ZERO_IMAGE_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ env.SHA }} + ZERO_IMAGE_URL: ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ needs.build.outputs.sha }} DOMAIN_NAME: 'zgigabugs-sync.rocicorp.dev' DOMAIN_CERT: 'arn:aws:acm:us-east-1:712907626835:certificate/83339ba0-dc7e-4fb7-b834-65e8307eeb4f' DATADOG_API_KEY: ${{ secrets.GIGABUGS_DATADOG_API_KEY }} ZERO_ADMIN_PASSWORD: ${{ secrets.ZERO_ADMIN_PASSWORD }} run: | cd prod/sst - npm install npx sst deploy --stage gigabugs-ebs + - name: Deploy SST app non ebs env: ZERO_APP_ID: 'gigabugs1' @@ -106,12 +146,11 @@ jobs: ZERO_CHANGE_DB: ${{ secrets.GIGABUGS_ZERO_CHANGE_DB }}2 ZERO_AUTH_JWK: ${{ secrets.GIGABUGS_ZERO_AUTH_JWK }} AWS_REGION: ${{ vars.AWS_DEFAULT_REGION }} - ZERO_IMAGE_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ env.SHA }} + ZERO_IMAGE_URL: ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ needs.build.outputs.sha }} DOMAIN_NAME: 'zgigabugs2-sync.rocicorp.dev' DOMAIN_CERT: 'arn:aws:acm:us-east-1:712907626835:certificate/b0dd8b0b-2007-42e7-b61d-6573b571b19c' DATADOG_API_KEY: ${{ secrets.GIGABUGS_DATADOG_API_KEY }} ZERO_ADMIN_PASSWORD: ${{ secrets.ZERO_ADMIN_PASSWORD }} run: | cd prod/sst - npm install npx sst deploy --stage gigabugs diff --git a/.github/workflows/sst-prod-deploy.yml b/.github/workflows/sst-prod-deploy.yml index d3e5968c5d..28c71e99e5 100644 --- a/.github/workflows/sst-prod-deploy.yml +++ b/.github/workflows/sst-prod-deploy.yml @@ -3,17 +3,26 @@ name: Build and Deploy Production Zero-Cache AWS SST on: push: branches: [main] + env: - # Setting an environment variable with the value of a configuration variable ECR_IMAGE_ZERO_CACHE: zero-zbugs AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} + jobs: - deploy: + build: runs-on: ubuntu-latest - + permissions: + contents: read + outputs: + sha: ${{ steps.pack.outputs.sha }} + zero_version: ${{ steps.pack.outputs.zero_version }} + zero_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_SYNC_PROTOCOL_VERSION }} + zero_min_supported_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false - name: Set up Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -21,55 +30,91 @@ jobs: node-version: 24.x cache: 'npm' - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ vars.AWS_DEFAULT_REGION }} - - - name: Set up QEMU for amd64 - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - if: runner.os == 'Linux' - - - name: Set up Docker for amd64 - uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2 - with: - platforms: linux/amd64 + - name: Install dependencies + run: npm ci - - name: Set up Docker - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 + - name: Build packages + run: npx turbo run build - - name: Login to Amazon ECR - run: | - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - - name: Install dependencies - run: | - npm run build-ci - name: Resolve Zero protocol versions + id: protocols run: | node --experimental-strip-types -e " import {PROTOCOL_VERSION, MIN_SERVER_SUPPORTED_SYNC_PROTOCOL} from './packages/zero-protocol/src/protocol-version.ts'; console.log('ZERO_SYNC_PROTOCOL_VERSION=' + PROTOCOL_VERSION); console.log('ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=' + MIN_SERVER_SUPPORTED_SYNC_PROTOCOL); - " >> "$GITHUB_ENV" - - name: Get Git SHA - id: git-sha - run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + " >> "$GITHUB_OUTPUT" + - name: Create package tarball + id: pack run: | + SHA="$(git rev-parse --short HEAD)" cd packages/zero npm pack - ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+${{ env.SHA }}.tgz" + ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+$SHA.tgz" + mkdir -p ./pkgs mv rocicorp-zero-*.tgz ./pkgs/$ZERO_TARBALL - echo "ZERO_VERSION=$ZERO_TARBALL" >> $GITHUB_ENV + echo "sha=$SHA" >> "$GITHUB_OUTPUT" + echo "zero_version=$ZERO_TARBALL" >> "$GITHUB_OUTPUT" + + - name: Upload package tarball + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + with: + name: zero-package-${{ steps.pack.outputs.sha }} + path: packages/zero/pkgs/${{ steps.pack.outputs.zero_version }} + if-no-files-found: error + retention-days: 1 + + deploy: + runs-on: ubuntu-latest + needs: build + permissions: + contents: read + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version: 24.x + package-manager-cache: false + + - name: Download package tarball + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 + with: + name: zero-package-${{ needs.build.outputs.sha }} + path: packages/zero/pkgs + + - name: Install deploy dependencies + working-directory: prod/sst + run: npm ci --ignore-scripts + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 + with: + role-to-assume: ${{ vars.AWS_DEPLOY_ROLE_PROD_ARN }} + role-session-name: github-actions-zero-prod-deploy + aws-region: ${{ vars.AWS_DEFAULT_REGION }} + + - name: Login to Amazon ECR + run: | + aws ecr get-login-password --region "$AWS_DEFAULT_REGION" | docker login --username AWS --password-stdin ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + - name: Build and push Docker image + env: + ZERO_VERSION: ${{ needs.build.outputs.zero_version }} + ZERO_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_sync_protocol_version }} + ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_min_supported_sync_protocol_version }} + SHA: ${{ needs.build.outputs.sha }} run: | cd packages/zero - docker buildx create --use - docker buildx inspect --bootstrap - docker buildx build --platform linux/amd64 --build-arg ZERO_VERSION=${{ env.ZERO_VERSION }} --build-arg ZERO_SYNC_PROTOCOL_VERSION=${{ env.ZERO_SYNC_PROTOCOL_VERSION }} --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=${{ env.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:${{ env.SHA }} -f ./Dockerfile --push . + DOCKER_BUILDKIT=1 docker build --platform linux/amd64 --build-arg ZERO_VERSION="$ZERO_VERSION" --build-arg ZERO_SYNC_PROTOCOL_VERSION="$ZERO_SYNC_PROTOCOL_VERSION" --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION="$ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION" -t ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA -f ./Dockerfile . + docker push ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA + - name: Deploy SST app env: ZERO_UPSTREAM_DB: ${{ secrets.PROD_ZERO_UPSTREAM_DB }} @@ -82,7 +127,7 @@ jobs: ZERO_AUTH_JWK: ${{ secrets.PROD_ZERO_AUTH_JWK }} ZERO_APP_PUBLICATIONS: ${{ vars.PROD_ZERO_APP_PUBLICATIONS }} AWS_REGION: ${{ vars.AWS_DEFAULT_REGION }} - ZERO_IMAGE_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ env.SHA }} + ZERO_IMAGE_URL: ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ needs.build.outputs.sha }} DOMAIN_NAME: 'zbugs-sync.rocicorp.dev' DOMAIN_CERT: ${{ vars.PROD_CERTIFICATE_ARN }} DATADOG_API_KEY: ${{ secrets.PROD_DATADOG_API_KEY }} @@ -91,5 +136,4 @@ jobs: OTEL_RESOURCE_ATTRIBUTES: ${{ vars.PROD_OTEL_RESOURCE_ATTRIBUTES }} run: | cd prod/sst - npm install npx sst deploy --stage production diff --git a/.github/workflows/sst-sandbox-deploy.yml b/.github/workflows/sst-sandbox-deploy.yml index 9c2d2b8e91..b734c3e407 100644 --- a/.github/workflows/sst-sandbox-deploy.yml +++ b/.github/workflows/sst-sandbox-deploy.yml @@ -3,17 +3,26 @@ name: Build and Deploy Sandbox Zero-Cache AWS SST on: push: branches: [sandbox] + env: - # Setting an environment variable with the value of a configuration variable ECR_IMAGE_ZERO_CACHE: zero-zbugs-sandbox AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} + jobs: - deploy: + build: runs-on: ubuntu-latest - + permissions: + contents: read + outputs: + sha: ${{ steps.pack.outputs.sha }} + zero_version: ${{ steps.pack.outputs.zero_version }} + zero_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_SYNC_PROTOCOL_VERSION }} + zero_min_supported_sync_protocol_version: ${{ steps.protocols.outputs.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false - name: Set up Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -21,55 +30,91 @@ jobs: node-version: 24.x cache: 'npm' - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ vars.AWS_DEFAULT_REGION }} - - - name: Set up QEMU for amd64 - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - if: runner.os == 'Linux' - - - name: Set up Docker for amd64 - uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2 - with: - platforms: linux/amd64 + - name: Install dependencies + run: npm ci - - name: Set up Docker - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 + - name: Build packages + run: npx turbo run build - - name: Login to Amazon ECR - run: | - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - - name: Install dependencies - run: | - npm run build-ci - name: Resolve Zero protocol versions + id: protocols run: | node --experimental-strip-types -e " import {PROTOCOL_VERSION, MIN_SERVER_SUPPORTED_SYNC_PROTOCOL} from './packages/zero-protocol/src/protocol-version.ts'; console.log('ZERO_SYNC_PROTOCOL_VERSION=' + PROTOCOL_VERSION); console.log('ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=' + MIN_SERVER_SUPPORTED_SYNC_PROTOCOL); - " >> "$GITHUB_ENV" - - name: Get Git SHA - id: git-sha - run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + " >> "$GITHUB_OUTPUT" + - name: Create package tarball + id: pack run: | + SHA="$(git rev-parse --short HEAD)" cd packages/zero npm pack - ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+${{ env.SHA }}.tgz" + ZERO_TARBALL="$(ls rocicorp-zero-*.tgz | xargs -- basename -s .tgz)+$SHA.tgz" + mkdir -p ./pkgs mv rocicorp-zero-*.tgz ./pkgs/$ZERO_TARBALL - echo "ZERO_VERSION=$ZERO_TARBALL" >> $GITHUB_ENV + echo "sha=$SHA" >> "$GITHUB_OUTPUT" + echo "zero_version=$ZERO_TARBALL" >> "$GITHUB_OUTPUT" + + - name: Upload package tarball + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + with: + name: zero-package-${{ steps.pack.outputs.sha }} + path: packages/zero/pkgs/${{ steps.pack.outputs.zero_version }} + if-no-files-found: error + retention-days: 1 + + deploy: + runs-on: ubuntu-latest + needs: build + permissions: + contents: read + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version: 24.x + package-manager-cache: false + + - name: Download package tarball + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 + with: + name: zero-package-${{ needs.build.outputs.sha }} + path: packages/zero/pkgs + + - name: Install deploy dependencies + working-directory: prod/sst + run: npm ci --ignore-scripts + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2 + with: + role-to-assume: ${{ vars.AWS_DEPLOY_ROLE_SANDBOX_ARN }} + role-session-name: github-actions-zero-sandbox-deploy + aws-region: ${{ vars.AWS_DEFAULT_REGION }} + + - name: Login to Amazon ECR + run: | + aws ecr get-login-password --region "$AWS_DEFAULT_REGION" | docker login --username AWS --password-stdin ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + - name: Build and push Docker image + env: + ZERO_VERSION: ${{ needs.build.outputs.zero_version }} + ZERO_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_sync_protocol_version }} + ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION: ${{ needs.build.outputs.zero_min_supported_sync_protocol_version }} + SHA: ${{ needs.build.outputs.sha }} run: | cd packages/zero - docker buildx create --use - docker buildx inspect --bootstrap - docker buildx build --platform linux/amd64 --build-arg ZERO_VERSION=${{ env.ZERO_VERSION }} --build-arg ZERO_SYNC_PROTOCOL_VERSION=${{ env.ZERO_SYNC_PROTOCOL_VERSION }} --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION=${{ env.ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION }} -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:${{ env.SHA }} -f ./Dockerfile --push . + DOCKER_BUILDKIT=1 docker build --platform linux/amd64 --build-arg ZERO_VERSION="$ZERO_VERSION" --build-arg ZERO_SYNC_PROTOCOL_VERSION="$ZERO_SYNC_PROTOCOL_VERSION" --build-arg ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION="$ZERO_MIN_SUPPORTED_SYNC_PROTOCOL_VERSION" -t ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA -f ./Dockerfile . + docker push ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_IMAGE_ZERO_CACHE:$SHA + - name: Deploy SST app env: ZERO_UPSTREAM_DB: ${{ secrets.SANDBOX_ZERO_UPSTREAM_DB }} @@ -81,12 +126,11 @@ jobs: ZERO_AUTH_JWK: ${{ secrets.SANDBOX_ZERO_AUTH_JWK }} ZERO_APP_PUBLICATIONS: ${{ vars.SANDBOX_ZERO_APP_PUBLICATIONS }} AWS_REGION: ${{ vars.AWS_DEFAULT_REGION }} - ZERO_IMAGE_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ env.SHA }} + ZERO_IMAGE_URL: ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_DEFAULT_REGION }}.amazonaws.com/${{ env.ECR_IMAGE_ZERO_CACHE }}:${{ needs.build.outputs.sha }} DOMAIN_NAME: 'zbugs-sync-sandbox.rocicorp.dev' DOMAIN_CERT: ${{ vars.SANDBOX_CERTIFICATE_ARN }} DATADOG_API_KEY: ${{ secrets.SANDBOX_DATADOG_API_KEY }} ZERO_ADMIN_PASSWORD: ${{ secrets.ZERO_ADMIN_PASSWORD }} run: | cd prod/sst - npm install npx sst deploy --stage sandbox diff --git a/package.json b/package.json index bbf6e31a75..4b0a287950 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "check-format": "oxfmt --check", "check-types": "npx turbo run check-types", "check-types:watch": "npx turbo watch check-types", - "build-ci": "npm install && npx turbo run build", "start-zero-cache": "cd packages/zero-cache && npm run start", "verify-deps": "cd tools/verify-package-deps && npm run verify", "verify-deps:fix": "cd tools/verify-package-deps && npm run verify:fix", From eeab4714b4c5a25b87844bfdaebafd1d0c1e639e Mon Sep 17 00:00:00 2001 From: Chase Adams Date: Tue, 19 May 2026 00:32:08 -0700 Subject: [PATCH 2/2] chore: update lockfile for sst prod --- prod/sst/package-lock.json | 410 +++++++++++++++++++++++++++++++++++-- 1 file changed, 391 insertions(+), 19 deletions(-) diff --git a/prod/sst/package-lock.json b/prod/sst/package-lock.json index 20b23d125d..ac8611d9de 100644 --- a/prod/sst/package-lock.json +++ b/prod/sst/package-lock.json @@ -13,8 +13,8 @@ "sst": "3.8.9" }, "devDependencies": { - "@rocicorp/prettier-config": "^0.3.0", - "@types/aws-lambda": "8.10.147" + "@types/aws-lambda": "8.10.147", + "oxfmt": "^0.43.0" } }, "@rocicorp/prettier-config": { @@ -97,29 +97,351 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@rocicorp/prettier-config": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@rocicorp/prettier-config/-/prettier-config-0.3.0.tgz", - "integrity": "sha512-w5xyMZjy32Xb3kgcZs28u/T1Q8XWi4kwWstyvF9ROsa9hNsJxP8g7LeaxwGHFJ7tPx7OXV3bexp1J3XKtoBgPg==", + "node_modules/@oxfmt/binding-android-arm-eabi": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.43.0.tgz", + "integrity": "sha512-CgU2s+/9hHZgo0IxVxrbMPrMj+tJ6VM3mD7Mr/4oiz4FNTISLoCvRmB5nk4wAAle045RtRjd86m673jwPyb1OQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "prettier": "^3.5.3" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rocicorp/prettier-config/node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "node_modules/@oxfmt/binding-android-arm64": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.43.0.tgz", + "integrity": "sha512-T9OfRwjA/EdYxAqbvR7TtqLv5nIrwPXuCtTwOHtS7aR9uXyn74ZYgzgTo6/ZwvTq9DY4W+DsV09hB2EXgn9EbA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-darwin-arm64": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.43.0.tgz", + "integrity": "sha512-o3i49ZUSJWANzXMAAVY1wnqb65hn4JVzwlRQ5qfcwhRzIA8lGVaud31Q3by5ALHPrksp5QEaKCQF9aAS3TXpZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-darwin-x64": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.43.0.tgz", + "integrity": "sha512-vWECzzCFkb0kK6jaHjbtC5sC3adiNWtqawFCxhpvsWlzVeKmv5bNvkB4nux+o4JKWTpHCM57NDK/MeXt44txmA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-freebsd-x64": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.43.0.tgz", + "integrity": "sha512-rgz8JpkKiI/umOf7fl9gwKyQasC8bs5SYHy6g7e4SunfLBY3+8ATcD5caIg8KLGEtKFm5ujKaH8EfjcmnhzTLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.43.0.tgz", + "integrity": "sha512-nWYnF3vIFzT4OM1qL/HSf1Yuj96aBuKWSaObXHSWliwAk2rcj7AWd6Lf7jowEBQMo4wCZVnueIGw/7C4u0KTBQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm-musleabihf": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.43.0.tgz", + "integrity": "sha512-sFg+NWJbLfupYTF4WELHAPSnLPOn1jiDZ33Z1jfDnTaA+cC3iB35x0FMMZTFdFOz3icRIArncwCcemJFGXu6TQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm64-gnu": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.43.0.tgz", + "integrity": "sha512-MelWqv68tX6wZEILDrTc9yewiGXe7im62+5x0bNXlCYFOZdA+VnYiJfAihbROsZ5fm90p9C3haFrqjj43XnlAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm64-musl": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.43.0.tgz", + "integrity": "sha512-ROaWfYh+6BSJ1Arwy5ujijTlwnZetxDxzBpDc1oBR4d7rfrPBqzeyjd5WOudowzQUgyavl2wEpzn1hw3jWcqLA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-ppc64-gnu": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.43.0.tgz", + "integrity": "sha512-PJRs/uNxmFipJJ8+SyKHh7Y7VZIKQicqrrBzvfyM5CtKi8D7yZKTwUOZV3ffxmiC2e7l1SDJpkBEOyue5NAFsg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-riscv64-gnu": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.43.0.tgz", + "integrity": "sha512-j6biGAgzIhj+EtHXlbNumvwG7XqOIdiU4KgIWRXAEj/iUbHKukKW8eXa4MIwpQwW1YkxovduKtzEAPnjlnAhVQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-riscv64-musl": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.43.0.tgz", + "integrity": "sha512-RYWxAcslKxvy7yri24Xm9cmD0RiANaiEPs007EFG6l9h1ChM69Q5SOzACaCoz4Z9dEplnhhneeBaTWMEdpgIbA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-s390x-gnu": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.43.0.tgz", + "integrity": "sha512-DT6Q8zfQQy3jxpezAsBACEHNUUixKSYTwdXeXojNHe4DQOoxjPdjr3Szu6BRNjxLykZM/xMNmp9ElOIyDppwtw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-x64-gnu": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.43.0.tgz", + "integrity": "sha512-R8Yk7iYcuZORXmCfFZClqbDxRZgZ9/HEidUuBNdoX8Ptx07cMePnMVJ/woB84lFIDjh2ROHVaOP40Ds3rBXFqg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-x64-musl": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.43.0.tgz", + "integrity": "sha512-F2YYqyvnQNvi320RWZNAvsaWEHwmW3k4OwNJ1hZxRKXupY63expbBaNp6jAgvYs7y/g546vuQnGHQuCBhslhLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-openharmony-arm64": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.43.0.tgz", + "integrity": "sha512-OE6TdietLXV3F6c7pNIhx/9YC1/2YFwjU9DPc/fbjxIX19hNIaP1rS0cFjCGJlGX+cVJwIKWe8Mos+LdQ1yAJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-arm64-msvc": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.43.0.tgz", + "integrity": "sha512-0nWK6a7pGkbdoypfVicmV9k/N1FwjPZENoqhlTU+5HhZnAhpIO3za30nEE33u6l6tuy9OVfpdXUqxUgZ+4lbZw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-ia32-msvc": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.43.0.tgz", + "integrity": "sha512-9aokTR4Ft+tRdvgN/pKzSkVy2ksc4/dCpDm9L/xFrbIw0yhLtASLbvoG/5WOTUh/BRPPnfGTsWznEqv0dlOmhA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-x64-msvc": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.43.0.tgz", + "integrity": "sha512-4bPgdQux2ZLWn3bf2TTXXMHcJB4lenmuxrLqygPmvCJ104Yqzj1UctxSRzR31TiJ4MLaG22RK8dUsVpJtrCz5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@types/aws-lambda": { @@ -410,6 +732,46 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/oxfmt": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.43.0.tgz", + "integrity": "sha512-KTYNG5ISfHSdmeZ25Xzb3qgz9EmQvkaGAxgBY/p38+ZiAet3uZeu7FnMwcSQJg152Qwl0wnYAxDc+Z/H6cvrwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinypool": "2.1.0" + }, + "bin": { + "oxfmt": "bin/oxfmt" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxfmt/binding-android-arm-eabi": "0.43.0", + "@oxfmt/binding-android-arm64": "0.43.0", + "@oxfmt/binding-darwin-arm64": "0.43.0", + "@oxfmt/binding-darwin-x64": "0.43.0", + "@oxfmt/binding-freebsd-x64": "0.43.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.43.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.43.0", + "@oxfmt/binding-linux-arm64-gnu": "0.43.0", + "@oxfmt/binding-linux-arm64-musl": "0.43.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.43.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.43.0", + "@oxfmt/binding-linux-riscv64-musl": "0.43.0", + "@oxfmt/binding-linux-s390x-gnu": "0.43.0", + "@oxfmt/binding-linux-x64-gnu": "0.43.0", + "@oxfmt/binding-linux-x64-musl": "0.43.0", + "@oxfmt/binding-openharmony-arm64": "0.43.0", + "@oxfmt/binding-win32-arm64-msvc": "0.43.0", + "@oxfmt/binding-win32-ia32-msvc": "0.43.0", + "@oxfmt/binding-win32-x64-msvc": "0.43.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -547,6 +909,16 @@ "node": ">=6" } }, + "node_modules/tinypool": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-2.1.0.tgz", + "integrity": "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.0.0 || >=22.0.0" + } + }, "node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",