Skip to content

Do not generate every token in the specified time-window #1256

Do not generate every token in the specified time-window

Do not generate every token in the specified time-window #1256

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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
run: "npm ci"
- name: "Lint"
run: "npm run lint"
- name: "Build types"
run: "npm run types"
- name: "Build lib"
run: "npm run build"
- name: "Build docs"
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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Node.js ${{ matrix.node_version }}"
uses: "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
with:
node-version: "${{ matrix.node_version }}"
cache: "npm"
- name: "Install dependencies"
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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Deno ${{ matrix.deno_version }}"
uses: "denoland/setup-deno@041b854f97b325bd60e53e9dc2de9cb9f9ac0cba"
with:
deno-version: "${{ matrix.deno_version }}"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Bun ${{ matrix.bun_version }}"
uses: "oven-sh/setup-bun@8f24390df009a496891208e5e36b8a1de1f45135"
with:
bun-version: "${{ matrix.bun_version }}"
- name: "Install dependencies"
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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
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@9bb56186c3b09b4f86b1c65136769dd318469633"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
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