fix(http): bound the size of buffered JSON responses #451
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| push: | |
| branches: [main, dev, stg] | |
| # Least-privilege default for every job (OpenSSF Token-Permissions). No job here | |
| # needs write; checkout + npm only read. Any job needing more must opt in locally. | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - run: npm ci | |
| - name: ESLint | |
| run: npm run lint | |
| - name: Prettier | |
| run: npm run format:check | |
| typecheck: | |
| name: Typecheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npm run typecheck | |
| test: | |
| name: Unit Tests (Node ${{ matrix.node-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [20, 22] | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npm run build | |
| - run: npm test | |
| env: | |
| CI: true | |
| test-windows: | |
| name: Unit Tests (Windows) | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npm run build | |
| - run: npm run typecheck | |
| - run: npm test | |
| env: | |
| CI: true | |
| build: | |
| name: Build (Node ${{ matrix.node-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [20, 22] | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npm run build | |
| - name: Smoke test built CLI | |
| run: | | |
| node dist/index.js --version | |
| node dist/index.js --help | |
| e2e: | |
| name: Local E2E Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npm run test:e2e | |
| env: | |
| CI: true | |
| gitleaks: | |
| name: Secret scan (gitleaks) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| persist-credentials: false | |
| # Same pinned version + checksum-verified install as | |
| # divergence-sentinel.yml (the more recent/secure of the two gitleaks | |
| # invocations already in this repo — release-build.yml pins an older | |
| # 8.21.2 with no checksum check). Continuous, per-PR/per-push gate: a | |
| # working-tree scan (--no-git), not a full-history scan — history | |
| # scanning is too slow to run on every PR, and this mirrors the mode | |
| # scripts/make-public-snapshot.sh already uses for the release-time scan | |
| # (`gitleaks detect --no-git --no-banner --redact --source <tree>`). | |
| - name: Install gitleaks | |
| env: | |
| GITLEAKS_VERSION: '8.28.0' | |
| run: | | |
| set -euo pipefail | |
| BASE="https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}" | |
| TARBALL="gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" | |
| curl -sSL -o "$TARBALL" "${BASE}/${TARBALL}" | |
| curl -sSL -o checksums.txt "${BASE}/gitleaks_${GITLEAKS_VERSION}_checksums.txt" | |
| grep " ${TARBALL}\$" checksums.txt | sha256sum -c - | |
| tar -xzf "$TARBALL" gitleaks | |
| sudo mv gitleaks /usr/local/bin/gitleaks | |
| gitleaks version | |
| - name: Scan working tree for secrets | |
| run: gitleaks detect --no-git --no-banner --redact --source . |