Skip to content

Update dependencies #1191

Update dependencies

Update dependencies #1191

Workflow file for this run

name: 'Main'
on:
push:
tags: ['*']
branches: ['*']
pull_request:
branches: ['*']
schedule:
- cron: '25 12 * * 3'
workflow_dispatch:
permissions: {}
jobs:
build:
name: 'Build on ${{ matrix.os }}'
runs-on: '${{ matrix.os }}'
permissions:
contents: 'read'
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'windows-latest', 'macos-latest']
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Node.js lts/*'
uses: 'actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65'
with:
node-version: 'lts/*'
cache: 'npm'
- name: 'Install dependencies'
run: 'npm ci'
- name: 'Run lint task'
run: 'npm run lint'
- name: 'Run types task'
run: 'npm run types'
- name: 'Run build task'
run: 'npm run build'
- name: 'Run docs task'
run: 'npm run docs'
- name: 'Verify that the build is reproducible'
if: "startsWith(github.ref, 'refs/tags/v')"
shell: 'bash'
run: '[ -z "$(git status --porcelain ./dist/)" ] || { git diff >&2; exit 1; }'
test-node:
name: 'Test on Node.js ${{ matrix.node_version }} on ${{ matrix.os }}'
needs: ['build']
runs-on: '${{ matrix.os }}'
permissions:
contents: 'read'
strategy:
fail-fast: false
matrix:
node_version: ['lts/-1', 'lts/*', 'current']
os: ['ubuntu-latest', 'windows-latest', 'macos-latest']
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Node.js ${{ matrix.node_version }}'
uses: 'actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65'
with:
node-version: '${{ matrix.node_version }}'
cache: 'npm'
- name: 'Install'
run: 'npm ci'
- name: 'Test'
run: 'npm run test:node'
test-deno:
name: 'Test on Deno ${{ matrix.deno_version }} on ${{ matrix.os }}'
needs: ['build']
runs-on: '${{ matrix.os }}'
permissions:
contents: 'read'
strategy:
fail-fast: false
matrix:
deno_version: ['vx.x.x']
os: ['ubuntu-latest', 'windows-latest', 'macos-latest']
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Deno ${{ matrix.deno_version }}'
uses: 'denoland/setup-deno@0df5d9c641efdff149993c321fc27c11c5df8623'
with:
deno-version: '${{ matrix.deno_version }}'
- name: 'Use Node.js lts/*'
uses: 'actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65'
with:
node-version: 'lts/*'
cache: 'npm'
- name: 'Install'
run: 'npm ci'
- name: 'Test'
run: 'npm run test:deno'
test-bun:
name: 'Test on Bun ${{ matrix.bun_version }} on ${{ matrix.os }}'
needs: ['build']
runs-on: '${{ matrix.os }}'
permissions:
contents: 'read'
strategy:
fail-fast: false
matrix:
bun_version: ['latest']
os: ['ubuntu-latest', 'macos-latest']
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Bun ${{ matrix.bun_version }}'
uses: 'oven-sh/setup-bun@a1800f471a0bc25cddac36bb13e6f436ddf341d7'
with:
bun-version: '${{ matrix.bun_version }}'
- name: 'Install'
run: 'bun install --frozen-lockfile'
- name: 'Test'
run: 'bun run test:bun'
test-browser:
name: 'Test on ${{ matrix.browser }} browser on ${{ matrix.os }}'
needs: ['build']
runs-on: '${{ matrix.os }}'
permissions:
contents: 'read'
strategy:
fail-fast: false
matrix:
browser: ['chromium', 'firefox', 'webkit']
os: ['ubuntu-latest']
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Node.js lts/*'
uses: 'actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65'
with:
node-version: 'lts/*'
cache: 'npm'
- name: 'Install'
run: 'npm ci && npx playwright install --with-deps "${{ matrix.browser }}"'
- name: 'Test'
run: 'npm run test:browser:"${{ matrix.browser }}"'
publish-npm:
name: 'Publish npm package'
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ['test-node', 'test-deno', 'test-bun', 'test-browser']
runs-on: 'ubuntu-latest'
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: 'Checkout'
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11'
- name: 'Use Node.js lts/*'
uses: 'actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65'
with:
node-version: 'lts/*'
registry-url: 'https://registry.npmjs.org'
- name: 'Publish package'
env:
NODE_AUTH_TOKEN: '${{ secrets.NPM_TOKEN }}'
run: |
PKG_NAME="$(jq -r '.name' ./package.json)"; PKG_VERSION="$(jq -r '.version' ./package.json)"
if [ "$(npm view "${PKG_NAME:?}" versions --json | jq -r --arg v "${PKG_VERSION:?}" 'index($v)')" = 'null' ]; then
npm publish --provenance --access public
fi
publish-github-release:
name: 'Publish GitHub release'
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ['test-node', 'test-deno', 'test-bun', 'test-browser']
runs-on: 'ubuntu-latest'
permissions:
contents: 'write'
steps:
- name: 'Publish'
env:
GITHUB_PAT: '${{ secrets.GITHUB_TOKEN }}'
run: |
RELEASE_STATUS="$(curl -fs --proto '=https' --tlsv1.3 --globoff \
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases/tags/${GITHUB_REF_NAME:?}" \
--header "Authorization: Bearer ${GITHUB_PAT:?}" \
--header 'Accept: application/vnd.github.v3+json' \
--header 'Content-Type: application/json' \
--write-out '%{http_code}' --output /dev/null ||:)"
if [ "${RELEASE_STATUS:?}" = '200' ]; then exit 0; fi
RELEASE_ID="$(curl -fsS --proto '=https' --tlsv1.3 --globoff \
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases" \
--header "Authorization: Bearer ${GITHUB_PAT:?}" \
--header 'Accept: application/vnd.github.v3+json' \
--header 'Content-Type: application/json' \
--data "$(jq -rn --arg tag "${GITHUB_REF_NAME:?}" '{"name": $tag, "tag_name": $tag, "generate_release_notes": true}')" | jq -r '.id')"
if [ -z "${RELEASE_ID-}" ] || [ "${RELEASE_ID:?}" = 'null' ]; then exit 1; fi