name: CI on: push: branches: [master] pull_request: branches: [master] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: "npm" - run: npm ci - run: npm run typecheck name: Type check - run: npm test name: Test publish: needs: test runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' && github.event_name == 'push' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: "npm" - run: npm ci - run: npm run build - uses: actions/setup-node@v4 with: node-version: "22" registry-url: "https://registry.npmjs.org" cache: "npm" - name: Publish (skip if version already exists) run: | PKG_NAME=$(node -p "require('./package.json').name") PKG_VERSION=$(node -p "require('./package.json').version") if npm view "${PKG_NAME}@${PKG_VERSION}" version 2>/dev/null; then echo "Version ${PKG_VERSION} already published — skipping." else npm publish --access public fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}