Skip to content

~0.29.0~

~0.29.0~ #4763

Workflow file for this run

name: test
permissions:
contents: read
on:
push:
branches:
- master
paths:
- '**/*'
- '!.github/workflows/*.yml'
- '.github/workflows/test.yml'
- '!assets/**'
- '!docs/**'
- '!example/**'
- '!site/**'
- '!.node-version'
- '!.nvmrc'
- '!.prettierignore'
- '!.prettierrc.json'
- '!*.md'
- '!LICENSE'
pull_request:
paths:
- '**/*'
- '!.github/workflows/*.yml'
- '.github/workflows/test.yml'
- '!assets/**'
- '!docs/**'
- '!example/**'
- '!site/**'
- '!.node-version'
- '!.nvmrc'
- '!.prettierignore'
- '!.prettierrc.json'
- '!*.md'
- '!LICENSE'
workflow_dispatch:
jobs:
node:
strategy:
fail-fast: false
matrix:
# https://endoflife.date/nodejs
node-version: [20.x, 22.x, 24.x, 25.x]
with-transformer: [false, true]
runs-on: ubuntu-latest
name: Node.js (${{ matrix.node-version }})${{ matrix.with-transformer && ' /w transformer' || '' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: pnpm install
- name: Run docker compose
run: docker compose up -d
- name: Run node tests
run: ${{ matrix.with-transformer && 'TEST_TRANSFORMER=1 ' || '' }}pnpm test
- name: Run esbuild test
if: ${{ !matrix.with-transformer }}
run: pnpm test:esbuild
deno:
name: Deno
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# https://endoflife.date/deno
deno-version: [2.5.x]
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Use Deno ${{ matrix.deno-version }}
uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3
with:
deno-version: ${{ matrix.deno-version }}
- name: Install dependencies
run: pnpm install
- name: Run docker compose
run: docker compose up -d
- name: Build
run: pnpm build
- name: Run deno tests
run: pnpm test:deno
- name: Lint for Deno/JSR
run: pnpm lint:deno
bun:
name: Bun
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
bun-version: [1.1.44, 1.2.23, 1.3]
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm install
- name: Use Bun ${{ matrix.bun-version }}
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: ${{ matrix.bun-version }}
- name: Run docker compose
run: docker compose up -d
- name: Run bun tests
run: pnpm test:bun
browser:
name: Browser
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm install
- name: Install playwright
run: pnpm playwright install chromium
- name: Run browser tests
run: pnpm test:browser
cloudflare-workers:
name: Cloudflare Workers
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm install
- name: Run docker compose
run: docker compose up -d
- name: Run cloudflare workers test
run: pnpm test:cloudflare-workers
older-typescript-version:
name: Older TypeScript version
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
typescript-version: [
~5.4.0, # 6.3.2024 https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/
~5.8.0, # 28.2.2025 https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/
~5.9.0, # 1.8.2025 https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/
]
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm install
- name: Run build with newer TypeScript
run: pnpm build
- name: Set TypeScript and TSD versions
run: |
TS_VERSION="${{ matrix.typescript-version }}"
echo "TS_VERSION=$TS_VERSION" >> $GITHUB_ENV
TSD_VERSION=$(echo '{"~5.4.0":"0.31.2", "~5.8.0":"0.32.0", "~5.9.0":"0.33.0"}' | jq -r --arg key "$TS_VERSION" '.[$key]')
echo "TSD_VERSION=$TSD_VERSION" >> $GITHUB_ENV
- name: Install Typescript (${{ env.TS_VERSION }}) and TSD (${{ env.TSD_VERSION }})
run: pnpm i -D typescript@${{ env.TS_VERSION }} tsd@${{ env.TSD_VERSION }}
- name: Make `tsconfig` backwards compatible
run: pnpm script:override-tsconfig-target
- name: Run tests with older TypeScript version
run: pnpm test:typings && pnpm test:node:build
jsdocs:
name: JSDocs
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Use Deno
uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3
with:
deno-version: 2.x
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Type-check JSDocs code blocks
run: pnpm test:jsdocs
typescript-native:
name: TypeScript Native
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm i
- name: Build
run: pnpm build
- name: Run TypeScript Native tests
run: pnpx @typescript/native-preview --project ./test/node/tsconfig.json
typescript-composite:
name: TypeScript Composite
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm i
- name: Test
working-directory: test/composite-ts
run: npm i && npm run check:types
jsr:
name: JSR
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
cache: 'pnpm'
node-version: lts/*
- name: Install dependencies
run: pnpm i
- name: Prepare for publish
run: pnpm script:remove-global-augmentations
- name: Dry-run jsr publish
run: pnpm jsr publish --allow-dirty --dry-run