From 9cf951d4b80a9f1b271a3be00d5c53b10465273b Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Sun, 2 Aug 2026 12:24:58 -0500 Subject: [PATCH 1/5] chore(release): add secure staged publishing process --- .github/CODEOWNERS | 24 ++ .github/PULL_REQUEST_TEMPLATE.md | 4 + .../actions/install-dependencies/action.yml | 4 +- .github/dependabot.yml | 10 + .github/workflows/ci_main.yml | 4 +- .github/workflows/ci_ts_latest.yml | 2 +- .github/workflows/codeql.yml | 28 ++ .github/workflows/conventional-commit.yml | 25 ++ .github/workflows/finalize-release.yml | 35 +++ .github/workflows/observable-wpt.yml | 20 +- .github/workflows/publish.yml | 48 ---- .github/workflows/rebase.yml | 20 +- .github/workflows/release-doctor.yml | 25 ++ .github/workflows/release-pr.yml | 119 ++++++++ .github/workflows/release-readiness.yml | 10 +- .github/workflows/release-stage.yml | 256 ++++++++++++++++++ README.md | 6 +- docs/RELEASE_PROCESS.md | 194 +++++++++++++ .../PRIVATE_SUCCESSION_PACKET.template.md | 34 +++ docs/rxjs-next/DECISIONS.md | 35 +++ docs/rxjs-next/PROJECT_PLAN.md | 86 +++++- nx.json | 17 -- package.json | 6 +- packages/rxjs/docs/PRERELEASE_APPROVAL.md | 10 +- packages/rxjs/docs/RELEASE_GATES.md | 5 + scripts/check-release-coherence.mjs | 38 +-- scripts/check-release-coherence.test.mjs | 26 +- scripts/publish.js | 78 ------ scripts/release.js | 99 ------- scripts/release/authorize-release-commit.mjs | 41 +++ .../release/authorize-release-commit.test.mjs | 27 ++ scripts/release/bootstrap-release.mjs | 56 ++++ scripts/release/check-release-bot-diff.mjs | 14 + scripts/release/finalize-release.mjs | 20 ++ scripts/release/prepare-release-pr.mjs | 166 ++++++++++++ scripts/release/release-candidate.mjs | 121 +++++++++ scripts/release/release-candidate.test.mjs | 39 +++ scripts/release/release-config.mjs | 45 +++ scripts/release/release-doctor.mjs | 159 +++++++++++ scripts/release/release-policy.mjs | 94 +++++++ scripts/release/release-policy.test.mjs | 63 +++++ scripts/release/stage-release.mjs | 164 +++++++++++ scripts/release/stage-release.test.mjs | 93 +++++++ scripts/release/validate-pr-title.mjs | 8 + scripts/release/wait-for-required-checks.mjs | 33 +++ 45 files changed, 2089 insertions(+), 322 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/codeql.yml create mode 100644 .github/workflows/conventional-commit.yml create mode 100644 .github/workflows/finalize-release.yml delete mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/release-doctor.yml create mode 100644 .github/workflows/release-pr.yml create mode 100644 .github/workflows/release-stage.yml create mode 100644 docs/RELEASE_PROCESS.md create mode 100644 docs/release/PRIVATE_SUCCESSION_PACKET.template.md delete mode 100644 scripts/publish.js delete mode 100644 scripts/release.js create mode 100644 scripts/release/authorize-release-commit.mjs create mode 100644 scripts/release/authorize-release-commit.test.mjs create mode 100644 scripts/release/bootstrap-release.mjs create mode 100644 scripts/release/check-release-bot-diff.mjs create mode 100644 scripts/release/finalize-release.mjs create mode 100644 scripts/release/prepare-release-pr.mjs create mode 100644 scripts/release/release-candidate.mjs create mode 100644 scripts/release/release-candidate.test.mjs create mode 100644 scripts/release/release-config.mjs create mode 100644 scripts/release/release-doctor.mjs create mode 100644 scripts/release/release-policy.mjs create mode 100644 scripts/release/release-policy.test.mjs create mode 100644 scripts/release/stage-release.mjs create mode 100644 scripts/release/stage-release.test.mjs create mode 100644 scripts/release/validate-pr-title.mjs create mode 100644 scripts/release/wait-for-required-checks.mjs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..f55501fa9c --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,24 @@ +# Create this organization team before enabling the release-boundary ruleset. +# Release authority and supply-chain boundaries require explicit review. +/.github/CODEOWNERS @ReactiveX/release-maintainers +/.github/actions/ @ReactiveX/release-maintainers +/.github/workflows/ @ReactiveX/release-maintainers +/.github/dependabot.yml @ReactiveX/release-maintainers +/CHANGELOG.md @ReactiveX/release-maintainers +/package.json @ReactiveX/release-maintainers +/pnpm-lock.yaml @ReactiveX/release-maintainers +/nx.json @ReactiveX/release-maintainers +/packages/*/package.json @ReactiveX/release-maintainers +/packages/migrate/src/version.ts @ReactiveX/release-maintainers +/packages/observable-polyfill/src/index.ts @ReactiveX/release-maintainers +/packages/observable-polyfill/test/import/commonjs.cjs @ReactiveX/release-maintainers +/packages/observable-polyfill/test/import/esm.mjs @ReactiveX/release-maintainers +/packages/rxjs/test/import/fixture-scenario.mjs @ReactiveX/release-maintainers +/.agents/skills/rxjs-next-migration/.rxjs-migrate-skill.json @ReactiveX/release-maintainers +/docs/RELEASE_PROCESS.md @ReactiveX/release-maintainers +/docs/release/ @ReactiveX/release-maintainers +/scripts/release/ @ReactiveX/release-maintainers +/scripts/check-release-coherence.mjs @ReactiveX/release-maintainers +/scripts/check-release-coherence.test.mjs @ReactiveX/release-maintainers +/scripts/prerelease-adoption-lib.mjs @ReactiveX/release-maintainers +/scripts/qualify-prerelease.mjs @ReactiveX/release-maintainers diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index ec3eb494a1..d10fe11c2b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,10 @@ /g, '') + .trim(); + const breaking = match.groups.breaking === '!' || Boolean(breakingFooter); + const level = breaking + ? 'breaking' + : match.groups.type === 'feat' + ? 'feature' + : ['fix', 'perf', 'revert'].includes(match.groups.type) + ? 'fix' + : 'none'; + return { description: match.groups.description, level, subject, type: match.groups.type }; +} + +export function selectRelease({ currentTag, manifestVersion = firstReleaseVersion, commits, mode = 'auto' }) { + const classified = commits.map((commit) => ({ ...commit, classification: classifyConventionalCommit(commit.subject, commit.body) })); + const invalid = classified.filter(({ classification }) => classification.level === 'invalid'); + if (invalid.length > 0) { + return { status: 'blocked', reason: `Invalid Conventional Commit title: ${invalid[0].subject}`, commits: classified }; + } + + const releasable = classified.filter(({ classification }) => classification.level !== 'none'); + if (mode === 'promote-stable') { + const current = parseVersion(currentTag ?? manifestVersion); + if (current.beta === null) return { status: 'blocked', reason: 'Stable promotion is available only from a beta.', commits: classified }; + return releaseResult(`${current.major}.${current.minor}.${current.patch}`, 'latest', 'explicit stable promotion', classified); + } + if (mode !== 'auto') return { status: 'blocked', reason: `Unknown release mode: ${mode}`, commits: classified }; + if (releasable.length === 0) return { status: 'none', reason: 'No release-relevant commits accumulated.', commits: classified }; + + if (!currentTag) { + return releaseResult(manifestVersion, 'next', 'first RxJS 9 beta', classified); + } + + const current = parseVersion(currentTag); + if (current.major !== 9) + return { status: 'blocked', reason: `The latest release tag is not an RxJS 9 version: ${currentTag}`, commits: classified }; + if (current.beta !== null) { + return releaseResult( + `${current.major}.${current.minor}.${current.patch}-beta.${current.beta + 1}`, + 'next', + 'beta counter increment', + classified + ); + } + + const levels = new Set(releasable.map(({ classification }) => classification.level)); + if (levels.has('breaking')) { + return { + status: 'blocked', + reason: 'A breaking change after stable RxJS 9 requires 10.0.0; the 9.x release train is blocked.', + commits: classified, + }; + } + if (levels.has('feature')) { + return releaseResult(`${current.major}.${current.minor + 1}.0`, 'latest', 'highest accumulated change is a feature', classified); + } + return releaseResult( + `${current.major}.${current.minor}.${current.patch + 1}`, + 'latest', + 'highest accumulated change is a fix', + classified + ); +} + +function releaseResult(version, channel, reason, commits) { + return { channel, commits, reason, status: 'planned', version }; +} + +export function validatePullRequestTitle(title) { + const classification = classifyConventionalCommit(title); + if (classification.level === 'invalid') throw new Error(classification.reason); + return classification; +} diff --git a/scripts/release/release-policy.test.mjs b/scripts/release/release-policy.test.mjs new file mode 100644 index 0000000000..688ed918e1 --- /dev/null +++ b/scripts/release/release-policy.test.mjs @@ -0,0 +1,63 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { classifyConventionalCommit, selectRelease, validatePullRequestTitle } from './release-policy.mjs'; + +const commit = (subject, body = '') => ({ body, sha: subject.padEnd(40, '0').slice(0, 40), subject }); + +test('increments only the beta counter for fixes, features, and breaking changes during beta', () => { + for (const subject of ['fix(core): repair teardown', 'feat(map): add projection option', 'feat(api)!: remove legacy form']) { + const result = selectRelease({ currentTag: '9.0.0-beta.7', commits: [commit(subject)] }); + assert.equal(result.channel, 'next'); + assert.equal(result.reason, 'beta counter increment'); + assert.equal(result.status, 'planned'); + assert.equal(result.version, '9.0.0-beta.8'); + } +}); + +test('selects patch and minor releases by the highest accumulated stable change', () => { + assert.equal(selectRelease({ currentTag: '9.2.3', commits: [commit('fix(core): correct error')] }).version, '9.2.4'); + const result = selectRelease({ + currentTag: '9.2.3', + commits: [commit('fix(core): correct error'), commit('feat(test): add helper')], + }); + assert.equal(result.version, '9.3.0'); + assert.equal(result.channel, 'latest'); +}); + +test('blocks breaking stable changes and permits explicit stable promotion', () => { + assert.equal(selectRelease({ currentTag: '9.2.3', commits: [commit('feat(api)!: break shape')] }).status, 'blocked'); + assert.match(selectRelease({ currentTag: '9.2.3', commits: [commit('feat(api)!: break shape')] }).reason, /10\.0\.0/); + const promotion = selectRelease({ currentTag: '9.0.0-beta.9', commits: [commit('docs: clarify example')], mode: 'promote-stable' }); + assert.equal(promotion.channel, 'latest'); + assert.equal(promotion.reason, 'explicit stable promotion'); + assert.equal(promotion.status, 'planned'); + assert.equal(promotion.version, '9.0.0'); +}); + +test('does not release documentation or internal chores', () => { + assert.equal( + selectRelease({ currentTag: '9.1.0', commits: [commit('docs: explain release'), commit('chore: format files')] }).status, + 'none' + ); +}); + +test('uses beta.0 for the first release and validates Conventional Commit titles', () => { + assert.equal(selectRelease({ currentTag: null, commits: [commit('feat(core): initial beta')] }).version, '9.0.0-beta.0'); + assert.equal(classifyConventionalCommit('fix(core): correct teardown').level, 'fix'); + assert.throws(() => validatePullRequestTitle('Correct teardown'), /supported Conventional Commit/); +}); + +test('ignores the empty pull-request template breaking-change placeholder', () => { + assert.equal( + classifyConventionalCommit('fix(core): correct teardown', '**BREAKING CHANGE:** ').level, + 'fix' + ); + assert.equal( + classifyConventionalCommit('fix(core): correct teardown', 'BREAKING CHANGE: changes cancellation ownership').level, + 'breaking' + ); + assert.equal( + classifyConventionalCommit('fix(core): correct teardown', '**BREAKING CHANGE:** changes cancellation ownership').level, + 'breaking' + ); +}); diff --git a/scripts/release/stage-release.mjs b/scripts/release/stage-release.mjs new file mode 100644 index 0000000000..605fd838cb --- /dev/null +++ b/scripts/release/stage-release.mjs @@ -0,0 +1,164 @@ +#!/usr/bin/env node + +import { spawnSync } from 'node:child_process'; +import { createHash } from 'node:crypto'; +import { mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; +import { assertNpmWebUrl, releasePackages, stagedPackagesVariable } from './release-config.mjs'; +import { verifyCandidate } from './release-candidate.mjs'; + +const root = fileURLToPath(new URL('../..', import.meta.url)); +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + const [command, directory = '.release/candidate', outputFile = '.release/staged-release.json'] = process.argv.slice(2); + const candidateRoot = path.resolve(root, directory); + const outputPath = path.resolve(root, outputFile); + if (command === 'publish') await stageCandidate(candidateRoot, outputPath); + else if (command === 'comment') process.stdout.write(await renderStagingComment(outputPath, process.env[stagedPackagesVariable] ?? '')); + else throw new Error('Usage: stage-release.mjs [candidate-directory] [staged-result-file]'); +} + +async function stageCandidate(candidateRoot, outputPath) { + const manifest = await verifyCandidate(candidateRoot); + const state = { + schemaVersion: 1, + version: manifest.version, + channel: manifest.channel, + sourceCommit: manifest.sourceCommit, + status: 'staging', + packages: [], + }; + await persist(); + try { + for (const expected of releasePackages) { + const entry = manifest.packages.find(({ name }) => name === expected.name); + const result = spawnSync('npm', ['stage', 'publish', path.join(candidateRoot, entry.filename), '--tag', manifest.channel, '--json'], { + cwd: root, + encoding: 'utf8', + env: { ...process.env, NPM_CONFIG_PROVENANCE: 'true' }, + }); + if (result.status !== 0) throw new Error(`Staging ${entry.name} failed (${result.status}).\n${result.stdout}${result.stderr}`); + const parsed = parseStageOutput(result.stdout); + const stagedEntry = { + name: entry.name, + version: entry.version, + distTag: manifest.channel, + stageId: parsed.stageId, + ...(parsed.url ? { url: assertNpmWebUrl(parsed.url, `${entry.name} staged-package URL`) } : {}), + sha512: entry.sha512, + integrity: entry.integrity, + stagedDigestVerified: false, + }; + state.packages.push(stagedEntry); + await persist(); + stagedEntry.stagedSha512 = await downloadAndVerifyStage(parsed.stageId, entry); + stagedEntry.stagedDigestVerified = true; + await persist(); + } + state.status = 'staged'; + await persist(); + } catch (error) { + state.status = 'partial'; + state.error = error.message; + await persist(); + throw error; + } + + async function persist() { + await writeFile(outputPath, `${JSON.stringify(state, null, 2)}\n`); + } +} + +async function downloadAndVerifyStage(stageId, entry) { + const downloadRoot = await mkdtemp(path.join(tmpdir(), 'rxjs-npm-stage-download-')); + try { + const result = spawnSync('npm', ['stage', 'download', stageId], { + cwd: downloadRoot, + encoding: 'utf8', + env: process.env, + }); + if (result.status !== 0) { + throw new Error(`Downloading npm stage ${stageId} failed (${result.status}).\n${result.stdout}${result.stderr}`); + } + return await verifyDownloadedStage(downloadRoot, entry); + } finally { + await rm(downloadRoot, { recursive: true, force: true }); + } +} + +export async function verifyDownloadedStage(downloadRoot, entry) { + const files = (await readdir(downloadRoot)).filter((file) => file.endsWith('.tgz')); + if (files.length !== 1) throw new Error(`npm stage download produced ${files.length} tarballs; expected exactly one.`); + const bytes = await readFile(path.join(downloadRoot, files[0])); + const stagedSha512 = createHash('sha512').update(bytes).digest('hex'); + if (bytes.byteLength !== entry.size || stagedSha512 !== entry.sha512) { + throw new Error(`${entry.name} npm-staged bytes do not match the qualified tarball. Reject every stage in this candidate.`); + } + return stagedSha512; +} + +export function parseStageOutput(stdout) { + let parsed; + try { + parsed = JSON.parse(stdout); + } catch { + parsed = null; + } + const values = parsed ? flatten(parsed) : []; + const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + const stageId = + values.find(({ key, value }) => /^stage-?id$/i.test(key) && typeof value === 'string' && uuid.test(value))?.value ?? + values.find(({ key, value }) => /^id$/i.test(key) && typeof value === 'string' && uuid.test(value))?.value ?? + stdout.match(/\b(?:stage(?:\s+|[-_])?id)\s*[:=]\s*["']?([0-9a-f-]{36})/i)?.[1]; + if (!stageId || !uuid.test(stageId)) { + throw new Error(`npm did not return a supported stage ID. Preserve this output and inspect npm staging:\n${stdout}`); + } + const returnedUrl = values.find( + ({ key, value }) => /url|href|link/i.test(key) && typeof value === 'string' && value.startsWith('http') + )?.value; + let url; + if (returnedUrl) { + try { + url = assertNpmWebUrl(returnedUrl, 'npm returned stage URL'); + } catch { + // Registry/API links are not rendered. Stage IDs remain the supported fallback. + } + } + return { stageId, ...(url ? { url } : {}) }; +} + +function flatten(value, key = '') { + if (Array.isArray(value)) return value.flatMap((item) => flatten(item, key)); + if (value && typeof value === 'object') return Object.entries(value).flatMap(([childKey, child]) => flatten(child, childKey)); + return [{ key, value }]; +} + +export async function renderStagingComment(stagedResultPath, configuredUrl) { + const state = JSON.parse(await readFile(stagedResultPath, 'utf8')); + const stagedPackagesUrl = assertNpmWebUrl(configuredUrl, stagedPackagesVariable); + const complete = + state.status === 'staged' && + state.packages.length === releasePackages.length && + state.packages.every((entry, index) => entry.name === releasePackages[index].name && entry.stagedDigestVerified === true); + const rows = state.packages + .map( + (entry, index) => + `| ${index + 1} | \`${entry.name}\` | \`${entry.version}\` | \`${entry.distTag}\` | \`${entry.stageId}\` | \`${entry.sha512}\` | ${ + entry.stagedDigestVerified ? 'verified' : '**not verified**' + } |${entry.url ? ` [Open stage](${assertNpmWebUrl(entry.url, `${entry.name} stage URL`)}) |` : ' — |'}` + ) + .join('\n'); + const command = complete ? 'approve' : 'reject'; + const commands = state.packages.map(({ name, stageId }) => `# ${name}\nnpm stage ${command} ${stageId}`).join('\n\n'); + return ( + `# ${complete ? 'npm approval required' : 'DO NOT APPROVE — reject partial staging'} for ${state.version}\n\n` + + (complete + ? `> [!CAUTION]\n> RxJS cannot be unpublished. Verify the package, version, channel, stage ID, and SHA-512 below before approving. Approve \`rxjs\` last.\n\n` + : `> [!WARNING]\n> Staging or staged-digest verification did not complete. Approve nothing. Open npm and reject every stage for this candidate with TFA, including any stage missing from this receipt, then create a fresh candidate and version.\n\n`) + + `[**Open npm Staged Packages**](${stagedPackagesUrl})\n\n` + + `| Order | Package | Version | Dist-tag | Stage ID | Qualified and staged SHA-512 | Staged download | Direct stage |\n| ---: | --- | --- | --- | --- | --- | --- | --- |\n${rows}\n\n` + + `## CLI fallback\n\n\`\`\`sh\n${commands}\n\`\`\`\n\n` + + `Every command requires npm TFA. If any value differs from this comment, reject the stages and create a fresh candidate.\n` + ); +} diff --git a/scripts/release/stage-release.test.mjs b/scripts/release/stage-release.test.mjs new file mode 100644 index 0000000000..ef77ef7aaf --- /dev/null +++ b/scripts/release/stage-release.test.mjs @@ -0,0 +1,93 @@ +import assert from 'node:assert/strict'; +import { createHash } from 'node:crypto'; +import { mkdtemp, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import test from 'node:test'; +import { parseStageOutput, renderStagingComment, verifyDownloadedStage } from './stage-release.mjs'; +import { releasePackages } from './release-config.mjs'; + +test('extracts supported stage IDs and validates returned npm links', () => { + const stageId = '123e4567-e89b-42d3-a456-426614174000'; + assert.deepEqual(parseStageOutput(`{"id":"rxjs@9.0.0","stageId":"${stageId}","url":"https://www.npmjs.com/example"}`), { + stageId, + url: 'https://www.npmjs.com/example', + }); + assert.deepEqual(parseStageOutput(`{"stageId":"${stageId}","url":"https://registry.npmjs.org/internal"}`), { + stageId, + }); + assert.throws(() => parseStageOutput('{"ok":true}'), /supported stage ID/); +}); + +test('requires the downloaded npm stage to match the qualified bytes', async () => { + const root = await mkdtemp(path.join(tmpdir(), 'rxjs-stage-download-')); + try { + const bytes = Buffer.from('exact staged tarball'); + const sha512 = createHash('sha512').update(bytes).digest('hex'); + await writeFile(path.join(root, 'download.tgz'), bytes); + assert.equal(await verifyDownloadedStage(root, { name: 'rxjs', size: bytes.byteLength, sha512 }), sha512); + await writeFile(path.join(root, 'download.tgz'), 'changed'); + await assert.rejects(() => verifyDownloadedStage(root, { name: 'rxjs', size: bytes.byteLength, sha512 }), /do not match/); + } finally { + await rm(root, { recursive: true, force: true }); + } +}); + +test('renders the exact approval order, hashes, links, and CLI fallbacks', async () => { + const root = await mkdtemp(path.join(tmpdir(), 'rxjs-stage-comment-')); + try { + const file = path.join(root, 'state.json'); + await writeFile( + file, + JSON.stringify({ + status: 'staged', + version: '9.0.0-beta.3', + packages: releasePackages.map(({ name }, index) => ({ + name, + version: '9.0.0-beta.3', + distTag: 'next', + stageId: `stage_${index}`, + sha512: `digest_${index}`, + stagedDigestVerified: true, + })), + }) + ); + const comment = await renderStagingComment(file, 'https://www.npmjs.com/settings/example/packages'); + assert.ok(comment.indexOf('`@rxjs/observable-polyfill`') < comment.indexOf('| `rxjs` |')); + assert.match(comment, /npm stage approve stage_3/); + assert.match(comment, /Approve `rxjs` last/); + assert.match(comment, /Qualified and staged SHA-512/); + await assert.rejects(() => renderStagingComment(file, 'https://npmjs.com/not-exact'), /exact https:\/\/www\.npmjs\.com/); + } finally { + await rm(root, { recursive: true, force: true }); + } +}); + +test('turns a partial staging receipt into rejection instructions', async () => { + const root = await mkdtemp(path.join(tmpdir(), 'rxjs-stage-reject-')); + try { + const file = path.join(root, 'state.json'); + await writeFile( + file, + JSON.stringify({ + status: 'partial', + version: '9.0.0-beta.3', + packages: [ + { + name: '@rxjs/observable-polyfill', + version: '9.0.0-beta.3', + distTag: 'next', + stageId: 'stage_polyfill', + sha512: 'abc', + }, + ], + }) + ); + const comment = await renderStagingComment(file, 'https://www.npmjs.com/settings/example/packages'); + assert.match(comment, /DO NOT APPROVE/); + assert.match(comment, /npm stage reject stage_polyfill/); + assert.doesNotMatch(comment, /npm stage approve/); + } finally { + await rm(root, { recursive: true, force: true }); + } +}); diff --git a/scripts/release/validate-pr-title.mjs b/scripts/release/validate-pr-title.mjs new file mode 100644 index 0000000000..1d723df43b --- /dev/null +++ b/scripts/release/validate-pr-title.mjs @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +import { validatePullRequestTitle } from './release-policy.mjs'; + +const title = process.argv.slice(2).join(' ').trim(); +if (!title) throw new Error('Usage: validate-pr-title.mjs '); +const result = validatePullRequestTitle(title); +process.stdout.write(`Validated ${result.type} Conventional Commit title (${result.level}).\n`); diff --git a/scripts/release/wait-for-required-checks.mjs b/scripts/release/wait-for-required-checks.mjs new file mode 100644 index 0000000000..7e80104b9f --- /dev/null +++ b/scripts/release/wait-for-required-checks.mjs @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +const [repository, commit] = process.argv.slice(2); +const token = process.env.GH_TOKEN; +const required = (process.env.RELEASE_REQUIRED_CHECKS ?? '') + .split(',') + .map((value) => value.trim()) + .filter(Boolean); +if (!repository || !commit || !token || required.length === 0) { + throw new Error('Repository, commit, GH_TOKEN, and comma-separated RELEASE_REQUIRED_CHECKS are required.'); +} + +const deadline = Date.now() + 30 * 60_000; +while (true) { + const response = await fetch(`https://api.github.com/repos/${repository}/commits/${commit}/check-runs?per_page=100`, { + headers: { accept: 'application/vnd.github+json', authorization: `Bearer ${token}`, 'x-github-api-version': '2022-11-28' }, + }); + if (!response.ok) throw new Error(`GitHub check-runs request failed: ${response.status} ${await response.text()}`); + const payload = await response.json(); + const byName = new Map(payload.check_runs.map((check) => [check.name, check])); + const failures = required.filter( + (name) => byName.has(name) && byName.get(name).status === 'completed' && byName.get(name).conclusion !== 'success' + ); + if (failures.length > 0) throw new Error(`Required master checks failed: ${failures.join(', ')}`); + const pending = required.filter((name) => byName.get(name)?.conclusion !== 'success'); + if (pending.length === 0) { + process.stdout.write(`All required checks passed for ${commit}: ${required.join(', ')}\n`); + break; + } + if (Date.now() >= deadline) throw new Error(`Timed out waiting for required master checks: ${pending.join(', ')}`); + process.stdout.write(`Waiting for required master checks: ${pending.join(', ')}\n`); + await new Promise((resolve) => setTimeout(resolve, 15_000)); +} From 61b277ce364a78dcdd9709673ef0b89c027d95e2 Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Sun, 2 Aug 2026 12:38:42 -0500 Subject: [PATCH 2/5] fix(release): scope candidate commit verification --- .github/workflows/release-stage.yml | 1 + docs/rxjs-next/PROJECT_PLAN.md | 3 +++ scripts/check-release-coherence.mjs | 1 + scripts/check-release-coherence.test.mjs | 1 + scripts/release/release-candidate.mjs | 21 +++++++++++---------- scripts/release/release-candidate.test.mjs | 11 ++++++++++- scripts/release/release-policy.mjs | 22 ++++++++++++++++++---- scripts/release/release-policy.test.mjs | 9 +++++++++ scripts/release/stage-release.mjs | 4 +++- 9 files changed, 57 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release-stage.yml b/.github/workflows/release-stage.yml index effef9c566..ead10d7889 100644 --- a/.github/workflows/release-stage.yml +++ b/.github/workflows/release-stage.yml @@ -19,6 +19,7 @@ concurrency: env: CANDIDATE_ARTIFACT: rxjs-release-candidate-${{ github.run_id }} + RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }} jobs: build: diff --git a/docs/rxjs-next/PROJECT_PLAN.md b/docs/rxjs-next/PROJECT_PLAN.md index 2db9c7525e..999281a705 100644 --- a/docs/rxjs-next/PROJECT_PLAN.md +++ b/docs/rxjs-next/PROJECT_PLAN.md @@ -3547,6 +3547,9 @@ conformance implementation depends on a runnable harness. - Added release policy/candidate/staging tests, the read-only doctor, CodeQL, full action pin enforcement, action Dependabot, and release CODEOWNERS. No npm, tag, release, or external-account mutation was performed locally. +- Corrected the first PR CI findings by making source-commit binding explicit + only at the privileged release boundary and replacing incomplete HTML-comment + sanitization with non-rendering placeholder detection covered by edge tests. - P6.9 is blocked only on its first GitHub-side security runs. P6.10 is the sole `NEXT` item until administrator setup and the disposable-package rehearsal prove the external npm/GitHub controls. diff --git a/scripts/check-release-coherence.mjs b/scripts/check-release-coherence.mjs index c6b24cbcf9..01c7890247 100644 --- a/scripts/check-release-coherence.mjs +++ b/scripts/check-release-coherence.mjs @@ -132,6 +132,7 @@ function auditReleaseMatrix(input, errors) { errors.push('Publishing must verify release policy before building and packing one candidate.'); } for (const requirement of [ + 'RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }}', 'release-candidate.mjs verify', 'release-candidate.mjs hydrate', 'stage-release.mjs publish', diff --git a/scripts/check-release-coherence.test.mjs b/scripts/check-release-coherence.test.mjs index 683ba55d14..741fcb287c 100644 --- a/scripts/check-release-coherence.test.mjs +++ b/scripts/check-release-coherence.test.mjs @@ -59,6 +59,7 @@ function validInput() { 'Verify release policy and repository configuration', 'Build release packages', 'Pack, inventory, and hash', + 'RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }}', 'release-candidate.mjs verify', 'release-candidate.mjs hydrate', 'stage-release.mjs publish', diff --git a/scripts/release/release-candidate.mjs b/scripts/release/release-candidate.mjs index 71a4dc269b..80f79aafe7 100644 --- a/scripts/release/release-candidate.mjs +++ b/scripts/release/release-candidate.mjs @@ -14,13 +14,14 @@ const root = fileURLToPath(new URL('../..', import.meta.url)); if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { const [command, directory = '.release/candidate'] = process.argv.slice(2); const candidateRoot = path.resolve(root, directory); - if (command === 'build') await buildCandidate(candidateRoot); - else if (command === 'verify') await verifyCandidate(candidateRoot); - else if (command === 'hydrate') await hydrateCandidate(candidateRoot); + const expectedSourceCommit = process.env.RELEASE_EXPECTED_SOURCE_COMMIT; + if (command === 'build') await buildCandidate(candidateRoot, { expectedSourceCommit }); + else if (command === 'verify') await verifyCandidate(candidateRoot, { expectedSourceCommit }); + else if (command === 'hydrate') await hydrateCandidate(candidateRoot, { expectedSourceCommit }); else throw new Error('Usage: release-candidate.mjs [candidate-directory]'); } -async function buildCandidate(outputRoot) { +async function buildCandidate(outputRoot, { expectedSourceCommit } = {}) { await rm(outputRoot, { recursive: true, force: true }); await mkdir(outputRoot, { recursive: true }); const budgets = JSON.parse(await readFile(path.join(root, 'packages/rxjs/test/release/budgets.json'), 'utf8')); @@ -58,21 +59,21 @@ async function buildCandidate(outputRoot) { const [version] = versions; const manifest = { schemaVersion: 1, - sourceCommit: process.env.GITHUB_SHA ?? run('git', ['rev-parse', 'HEAD'], root).stdout.trim(), + sourceCommit: run('git', ['rev-parse', 'HEAD'], root).stdout.trim(), version, channel: channelForVersion(version), generatedAt: new Date().toISOString(), packages, }; await writeFile(path.join(outputRoot, 'release-manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`); - await verifyCandidate(outputRoot); + await verifyCandidate(outputRoot, { expectedSourceCommit }); process.stdout.write(`${JSON.stringify({ version, channel: manifest.channel, packages: packages.length })}\n`); } -export async function verifyCandidate(outputRoot) { +export async function verifyCandidate(outputRoot, { expectedSourceCommit } = {}) { const manifest = JSON.parse(await readFile(path.join(outputRoot, 'release-manifest.json'), 'utf8')); assert.equal(manifest.schemaVersion, 1); - if (process.env.GITHUB_SHA) assert.equal(manifest.sourceCommit, process.env.GITHUB_SHA, 'Candidate source commit changed.'); + if (expectedSourceCommit) assert.equal(manifest.sourceCommit, expectedSourceCommit, 'Candidate source commit changed.'); assert.equal(manifest.packages.length, releasePackages.length); assert.deepEqual( manifest.packages.map(({ name }) => name), @@ -94,8 +95,8 @@ export async function verifyCandidate(outputRoot) { return manifest; } -async function hydrateCandidate(outputRoot) { - const manifest = await verifyCandidate(outputRoot); +async function hydrateCandidate(outputRoot, { expectedSourceCommit } = {}) { + const manifest = await verifyCandidate(outputRoot, { expectedSourceCommit }); const temporaryRoot = await mkdtemp(path.join(tmpdir(), 'rxjs-release-hydrate-')); try { for (const entry of manifest.packages) { diff --git a/scripts/release/release-candidate.test.mjs b/scripts/release/release-candidate.test.mjs index a743fb2131..4ac979cdc3 100644 --- a/scripts/release/release-candidate.test.mjs +++ b/scripts/release/release-candidate.test.mjs @@ -30,7 +30,16 @@ test('verifies every byte and the fixed approval order', async () => { path.join(root, 'release-manifest.json'), JSON.stringify({ schemaVersion: 1, sourceCommit: 'a'.repeat(40), version: '9.0.0-beta.2', channel: 'next', packages }) ); - await verifyCandidate(root); + const ambientGitHubSha = process.env.GITHUB_SHA; + process.env.GITHUB_SHA = 'b'.repeat(40); + try { + await verifyCandidate(root); + } finally { + if (ambientGitHubSha === undefined) delete process.env.GITHUB_SHA; + else process.env.GITHUB_SHA = ambientGitHubSha; + } + await verifyCandidate(root, { expectedSourceCommit: 'a'.repeat(40) }); + await assert.rejects(() => verifyCandidate(root, { expectedSourceCommit: 'b'.repeat(40) }), /Candidate source commit changed/); await writeFile(path.join(root, packages[0].filename), 'changed'); await assert.rejects(() => verifyCandidate(root), /size changed|SHA-256 changed/); } finally { diff --git a/scripts/release/release-policy.mjs b/scripts/release/release-policy.mjs index 26fdc25ead..69a0d90a4e 100644 --- a/scripts/release/release-policy.mjs +++ b/scripts/release/release-policy.mjs @@ -17,10 +17,8 @@ export function parseVersion(version) { export function classifyConventionalCommit(subject, body = '') { const match = conventionalTitle.exec(subject); if (!match?.groups) return { level: 'invalid', subject, reason: 'title is not a supported Conventional Commit' }; - const breakingFooter = body - .match(/(?:^|\n)(?:\*\*)?BREAKING CHANGES?:(?:\*\*)?\s*([^\n]*)/i)?.[1] - ?.replace(//g, '') - .trim(); + const breakingDescription = body.match(/(?:^|\n)(?:\*\*)?BREAKING CHANGES?:(?:\*\*)?[^\S\r\n]*([^\r\n]*)/i)?.[1]; + const breakingFooter = breakingDescription !== undefined && hasTextOutsideHtmlComments(breakingDescription); const breaking = match.groups.breaking === '!' || Boolean(breakingFooter); const level = breaking ? 'breaking' @@ -32,6 +30,22 @@ export function classifyConventionalCommit(subject, body = '') { return { description: match.groups.description, level, subject, type: match.groups.type }; } +function hasTextOutsideHtmlComments(value) { + let index = 0; + while (index < value.length) { + if (value.startsWith('', index + 4); + if (commentEnd === -1) return false; + index = commentEnd + 3; + } else if (/\S/.test(value[index])) { + return true; + } else { + index += 1; + } + } + return false; +} + export function selectRelease({ currentTag, manifestVersion = firstReleaseVersion, commits, mode = 'auto' }) { const classified = commits.map((commit) => ({ ...commit, classification: classifyConventionalCommit(commit.subject, commit.body) })); const invalid = classified.filter(({ classification }) => classification.level === 'invalid'); diff --git a/scripts/release/release-policy.test.mjs b/scripts/release/release-policy.test.mjs index 688ed918e1..ff3fb776b2 100644 --- a/scripts/release/release-policy.test.mjs +++ b/scripts/release/release-policy.test.mjs @@ -60,4 +60,13 @@ test('ignores the empty pull-request template breaking-change placeholder', () = classifyConventionalCommit('fix(core): correct teardown', '**BREAKING CHANGE:** changes cancellation ownership').level, 'breaking' ); + assert.equal( + classifyConventionalCommit('fix(core): correct teardown', '**BREAKING CHANGE:** ').level, + 'fix' + ); + assert.equal( + classifyConventionalCommit('fix(core): correct teardown', '**BREAKING CHANGE:** changes cancellation ownership') + .level, + 'breaking' + ); }); diff --git a/scripts/release/stage-release.mjs b/scripts/release/stage-release.mjs index 605fd838cb..d40c84a7a0 100644 --- a/scripts/release/stage-release.mjs +++ b/scripts/release/stage-release.mjs @@ -20,7 +20,9 @@ if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { } async function stageCandidate(candidateRoot, outputPath) { - const manifest = await verifyCandidate(candidateRoot); + const manifest = await verifyCandidate(candidateRoot, { + expectedSourceCommit: process.env.RELEASE_EXPECTED_SOURCE_COMMIT, + }); const state = { schemaVersion: 1, version: manifest.version, From 7a9f6db0286ec8546f38f37b51e47969f66e778e Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Sun, 2 Aug 2026 13:41:41 -0500 Subject: [PATCH 3/5] ci(release): harden single-maintainer publishing --- .github/CODEOWNERS | 24 - .github/workflows/finalize-release.yml | 18 +- .github/workflows/fuzz.yml | 26 + .github/workflows/osv.yml | 53 + .github/workflows/release-doctor.yml | 3 +- .github/workflows/release-pr.yml | 3 - .github/workflows/release-qualify.yml | 286 + .github/workflows/release-stage.yml | 278 +- .gitignore | 2 +- README.md | 5 +- SECURITY.md | 28 +- docs/RELEASE_PROCESS.md | 242 +- .../PRIVATE_SUCCESSION_PACKET.template.md | 34 - docs/rxjs-next/ARCHITECTURE.md | 25 + docs/rxjs-next/DECISIONS.md | 67 +- docs/rxjs-next/PROJECT_PLAN.md | 96 +- docs/security/LEGACY_DOCS_VULNERABILITIES.md | 9 + osv-scanner.toml | 882 +++ package.json | 52 +- packages/migrate/package.json | 2 +- packages/observable-polyfill/package.json | 3 + packages/observable-polyfill/src/index.ts | 2 + .../src/lifecycle.fuzz.spec.ts | 77 + packages/rxjs/README.md | 1 + packages/rxjs/docs/RELEASE_GATES.md | 2 +- packages/rxjs/docs/SECURITY_ASSURANCE.md | 52 + packages/rxjs/package.json | 6 +- packages/rxjs/src/notification.ts | 8 +- packages/test/src/types.ts | 2 +- pnpm-lock.yaml | 5421 +++++++---------- pnpm-workspace.yaml | 2 +- scripts/check-release-coherence.mjs | 16 +- scripts/check-release-coherence.test.mjs | 7 +- scripts/release/authorize-stage.mjs | 95 + scripts/release/authorize-stage.test.mjs | 116 + scripts/release/bootstrap-release.mjs | 56 - .../release/compare-release-candidates.mjs | 9 + scripts/release/finalize-release.mjs | 38 +- scripts/release/generate-release-evidence.mjs | 65 + scripts/release/install-pinned-npm.mjs | 47 + scripts/release/install-pinned-npm.test.mjs | 17 + scripts/release/release-candidate.mjs | 85 +- scripts/release/release-candidate.test.mjs | 73 +- scripts/release/release-config.mjs | 8 + scripts/release/release-doctor.mjs | 118 +- scripts/release/release-policy.test.mjs | 16 + scripts/release/stage-release.test.mjs | 14 + scripts/release/validate-commit-message.mjs | 10 + scripts/security/check-osv-exceptions.mjs | 90 + .../security/check-osv-exceptions.test.mjs | 34 + scripts/security/generate-osv-baseline.mjs | 35 + 51 files changed, 4806 insertions(+), 3854 deletions(-) delete mode 100644 .github/CODEOWNERS create mode 100644 .github/workflows/fuzz.yml create mode 100644 .github/workflows/osv.yml create mode 100644 .github/workflows/release-qualify.yml delete mode 100644 docs/release/PRIVATE_SUCCESSION_PACKET.template.md create mode 100644 docs/security/LEGACY_DOCS_VULNERABILITIES.md create mode 100644 osv-scanner.toml create mode 100644 packages/observable-polyfill/src/lifecycle.fuzz.spec.ts create mode 100644 packages/rxjs/docs/SECURITY_ASSURANCE.md create mode 100644 scripts/release/authorize-stage.mjs create mode 100644 scripts/release/authorize-stage.test.mjs delete mode 100644 scripts/release/bootstrap-release.mjs create mode 100644 scripts/release/compare-release-candidates.mjs create mode 100644 scripts/release/generate-release-evidence.mjs create mode 100644 scripts/release/install-pinned-npm.mjs create mode 100644 scripts/release/install-pinned-npm.test.mjs create mode 100644 scripts/release/validate-commit-message.mjs create mode 100644 scripts/security/check-osv-exceptions.mjs create mode 100644 scripts/security/check-osv-exceptions.test.mjs create mode 100644 scripts/security/generate-osv-baseline.mjs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index f55501fa9c..0000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,24 +0,0 @@ -# Create this organization team before enabling the release-boundary ruleset. -# Release authority and supply-chain boundaries require explicit review. -/.github/CODEOWNERS @ReactiveX/release-maintainers -/.github/actions/ @ReactiveX/release-maintainers -/.github/workflows/ @ReactiveX/release-maintainers -/.github/dependabot.yml @ReactiveX/release-maintainers -/CHANGELOG.md @ReactiveX/release-maintainers -/package.json @ReactiveX/release-maintainers -/pnpm-lock.yaml @ReactiveX/release-maintainers -/nx.json @ReactiveX/release-maintainers -/packages/*/package.json @ReactiveX/release-maintainers -/packages/migrate/src/version.ts @ReactiveX/release-maintainers -/packages/observable-polyfill/src/index.ts @ReactiveX/release-maintainers -/packages/observable-polyfill/test/import/commonjs.cjs @ReactiveX/release-maintainers -/packages/observable-polyfill/test/import/esm.mjs @ReactiveX/release-maintainers -/packages/rxjs/test/import/fixture-scenario.mjs @ReactiveX/release-maintainers -/.agents/skills/rxjs-next-migration/.rxjs-migrate-skill.json @ReactiveX/release-maintainers -/docs/RELEASE_PROCESS.md @ReactiveX/release-maintainers -/docs/release/ @ReactiveX/release-maintainers -/scripts/release/ @ReactiveX/release-maintainers -/scripts/check-release-coherence.mjs @ReactiveX/release-maintainers -/scripts/check-release-coherence.test.mjs @ReactiveX/release-maintainers -/scripts/prerelease-adoption-lib.mjs @ReactiveX/release-maintainers -/scripts/qualify-prerelease.mjs @ReactiveX/release-maintainers diff --git a/.github/workflows/finalize-release.yml b/.github/workflows/finalize-release.yml index b700611c68..1c85ad3087 100644 --- a/.github/workflows/finalize-release.yml +++ b/.github/workflows/finalize-release.yml @@ -11,21 +11,29 @@ permissions: jobs: finalize: name: Finalize fully approved release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 + permissions: + attestations: read + contents: write steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: { persist-credentials: false } - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } - - name: Publish immutable GitHub Releases only after all four packages are public + with: { node-version: '24.12.0', package-manager-cache: false } + - name: Install checked npm 11.18.0 + run: | + npm_bin=$(node scripts/release/install-pinned-npm.mjs "$RUNNER_TEMP/npm-cli") + echo "$(dirname "$npm_bin")" >> "$GITHUB_PATH" + - name: Publish immutable GitHub Releases only after registry, signatures, and attestations verify env: GH_TOKEN: ${{ github.token }} run: | gh api "repos/$GITHUB_REPOSITORY/releases?per_page=100" --jq '.[] | select(.draft == true) | .tag_name' | while read -r version; do candidate_dir="$RUNNER_TEMP/$version" mkdir -p "$candidate_dir" - gh release download "$version" --pattern release-manifest.json --dir "$candidate_dir" - if node scripts/release/finalize-release.mjs "$candidate_dir/release-manifest.json"; then + gh release download "$version" --dir "$candidate_dir" + for tarball in "$candidate_dir"/*.tgz; do gh attestation verify "$tarball" --repo "$GITHUB_REPOSITORY"; done + if node scripts/release/finalize-release.mjs "$candidate_dir"; then if [[ "$version" == *-* ]]; then gh release edit "$version" --draft=false --prerelease --latest=false else diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml new file mode 100644 index 0000000000..9ed6f70c08 --- /dev/null +++ b/.github/workflows/fuzz.yml @@ -0,0 +1,26 @@ +name: Extended property fuzzing + +on: + schedule: + - cron: '23 6 * * 3' + workflow_dispatch: + +permissions: + contents: read + +jobs: + fuzz: + name: Observable and release-policy properties + runs-on: ubuntu-24.04 + timeout-minutes: 30 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - name: Install dependencies + uses: ./.github/actions/install-dependencies + with: { node-version: '24.12.0' } + - name: Run extended properties; fast-check reports the reproduction seed on failure + env: { RXJS_FUZZ_RUNS: 5000 } + run: | + pnpm --filter @rxjs/observable-polyfill exec vitest --run src/lifecycle.fuzz.spec.ts + node --test scripts/release/authorize-stage.test.mjs scripts/release/install-pinned-npm.test.mjs scripts/release/release-policy.test.mjs scripts/release/release-candidate.test.mjs scripts/release/stage-release.test.mjs diff --git a/.github/workflows/osv.yml b/.github/workflows/osv.yml new file mode 100644 index 0000000000..e6ca3d6522 --- /dev/null +++ b/.github/workflows/osv.yml @@ -0,0 +1,53 @@ +name: OSV vulnerability policy + +on: + pull_request: + branches: ['master'] + push: + branches: ['master'] + schedule: + - cron: '41 7 * * 1' + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: osv-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + scan: + name: No unreviewed release-reachable vulnerabilities + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - name: Reject expired, unowned, untracked, or overlong exceptions + run: node scripts/security/check-osv-exceptions.mjs + - run: mkdir -p .security + - name: Run full OSV scan with only reviewed docs-tooling exceptions + uses: google/osv-scanner-action/osv-scanner-action@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8 + with: + scan-args: |- + --config=osv-scanner.toml + --format=json + --output-file=.security/osv-root.json + --lockfile=pnpm-lock.yaml + - name: Prove every remaining npm advisory path is isolated to apps/rxjs.dev + run: | + pnpm audit --json > .security/pnpm-audit.json || true + node scripts/security/check-osv-exceptions.mjs .security/pnpm-audit.json + - name: Preserve scan evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: osv-evidence-${{ github.run_id }} + path: .security + if-no-files-found: warn + retention-days: 30 diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index d876989328..82e44c3437 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -16,10 +16,11 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: { persist-credentials: false, fetch-depth: 0 } - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } + with: { node-version: '24.12.0', package-manager-cache: false } - env: GH_TOKEN: ${{ github.token }} NPM_STAGED_PACKAGES_URL: ${{ vars.NPM_STAGED_PACKAGES_URL }} RELEASE_REQUIRED_CHECKS: ${{ vars.RELEASE_REQUIRED_CHECKS }} + RELEASE_BRANCH_RULESET_ID: ${{ vars.RELEASE_BRANCH_RULESET_ID }} RELEASE_TAG_RULESET_ID: ${{ vars.RELEASE_TAG_RULESET_ID }} run: node scripts/release/release-doctor.mjs --strict diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 7f8d1a81d5..7eb074f400 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -90,7 +90,6 @@ jobs: if: steps.plan.outputs.status == 'planned' env: GH_TOKEN: ${{ steps.app-token.outputs.token }} - RELEASE_REVIEWER: ${{ vars.RELEASE_MAINTAINER_LOGIN }} VERSION: ${{ steps.plan.outputs.version }} run: | git config user.name "rxjs-release-app[bot]" @@ -108,8 +107,6 @@ jobs: else gh pr edit "$pr_number" --title "chore(release): $VERSION" --body-file "$RUNNER_TEMP/release-pr.md" fi - pr_number=$(gh pr list --head release/rxjs-9 --state open --json number --jq '.[0].number') - if [ -n "$RELEASE_REVIEWER" ]; then gh pr edit "$pr_number" --add-reviewer "$RELEASE_REVIEWER"; fi - name: Block the 9.x train after a stable breaking change if: steps.plan.outputs.status == 'blocked' diff --git a/.github/workflows/release-qualify.yml b/.github/workflows/release-qualify.yml new file mode 100644 index 0000000000..d554b89a9f --- /dev/null +++ b/.github/workflows/release-qualify.yml @@ -0,0 +1,286 @@ +name: Qualify RxJS 9 release + +on: + push: + branches: ['master'] + paths: + - 'CHANGELOG.md' + - 'packages/migrate/package.json' + - 'packages/observable-polyfill/package.json' + - 'packages/rxjs/package.json' + - 'packages/test/package.json' + +permissions: + contents: read + +concurrency: + group: rxjs-9-release-qualification + cancel-in-progress: false + +env: + BUILD_ARTIFACT_PREFIX: rxjs-release-build-${{ github.run_id }} + CORE_ARTIFACT: rxjs-release-core-${{ github.run_id }} + CANDIDATE_ARTIFACT: rxjs-release-candidate-${{ github.run_id }} + RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }} + +jobs: + build: + name: Independent clean build ${{ matrix.build }} + strategy: + fail-fast: false + matrix: { build: [a, b] } + runs-on: ubuntu-24.04 + permissions: + contents: read + pull-requests: read + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { fetch-depth: 0, persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - name: Verify that the generated release PR authorized this commit + id: authorize + env: { GH_TOKEN: '${{ github.token }}' } + run: | + pr_number=$(node scripts/release/authorize-release-commit.mjs "$GITHUB_REPOSITORY" "$GITHUB_SHA") + echo "pull-request=$pr_number" >> "$GITHUB_OUTPUT" + - name: Fresh frozen dependency install with no restored cache + run: pnpm install --frozen-lockfile + - name: Verify release policy and repository configuration + run: pnpm run release:check + - name: Build release packages + run: pnpm run prepare-packages + - name: Pack, inventory, and hash this independent candidate + env: + RELEASE_AUTHORIZING_PR: ${{ steps.authorize.outputs.pull-request }} + RELEASE_BUILD_ID: ${{ matrix.build }} + RELEASE_RUNNER_IMAGE: ubuntu-24.04 + run: node scripts/release/release-candidate.mjs build .release/candidate + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ env.BUILD_ARTIFACT_PREFIX }}-${{ matrix.build }} + path: .release/candidate + if-no-files-found: error + retention-days: 7 + + compare: + name: Require byte-identical independent builds + needs: build + runs-on: ubuntu-24.04 + outputs: + version: ${{ steps.details.outputs.version }} + pull-request: ${{ steps.details.outputs.pull-request }} + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { pattern: 'rxjs-release-build-${{ github.run_id }}-*', path: .release/builds } + - run: >- + node scripts/release/compare-release-candidates.mjs + .release/builds/rxjs-release-build-${{ github.run_id }}-a + .release/builds/rxjs-release-build-${{ github.run_id }}-b + .release/candidate + - id: details + run: | + echo "version=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").version)')" >> "$GITHUB_OUTPUT" + echo "pull-request=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").authorizingPullRequest)')" >> "$GITHUB_OUTPUT" + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate, if-no-files-found: error, retention-days: 7 } + + package: + name: Exact tarballs / package, type, import, and migration gates + needs: compare + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - name: Run package source and lifecycle properties + run: | + pnpm --filter @rxjs/observable-polyfill --filter @rxjs/test --filter @rxjs/migrate run test + pnpm --filter rxjs exec vitest --run src + - name: Type-check and exercise the hydrated canonical packages + run: | + pnpm --filter @rxjs/observable-polyfill --filter @rxjs/test --filter @rxjs/migrate --filter rxjs run test:types + pnpm --filter @rxjs/observable-polyfill --filter @rxjs/test --filter @rxjs/migrate --filter rxjs run test:imports + pnpm --filter @rxjs/migrate run test:pack + pnpm --filter rxjs run test:migration-contracts + + node: + name: Exact tarballs / Node ${{ matrix.node }}${{ matrix.advisory && ' (advisory)' || '' }} + needs: compare + runs-on: ubuntu-24.04 + continue-on-error: ${{ matrix.advisory }} + strategy: + fail-fast: false + matrix: + include: + - { node: '22.13.0', advisory: false } + - { node: '24.12.0', advisory: false } + - { node: '26', advisory: true } + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '${{ matrix.node }}', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - run: pnpm run test:release:runtime + + browser: + name: Exact tarballs / browsers, Webpack, performance + needs: compare + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - run: pnpm exec playwright install --with-deps chromium firefox webkit + - run: pnpm run test:release:browsers && pnpm run test:release:webpack && pnpm run test:release:performance + + alternate-runtime: + name: Exact tarballs / ${{ matrix.runtime }} + needs: compare + runs-on: ubuntu-24.04 + strategy: { fail-fast: false, matrix: { runtime: [deno, bun] } } + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - if: matrix.runtime == 'deno' + uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.5 + with: { deno-version: v2.8.0 } + - if: matrix.runtime == 'bun' + uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 + with: { bun-version: 1.3.14 } + - if: matrix.runtime == 'deno' + run: deno run --allow-read packages/rxjs/test/release/runtime-contract.mjs + - if: matrix.runtime == 'bun' + run: bun packages/rxjs/test/release/runtime-contract.mjs + + safari: + name: Exact tarballs / ${{ matrix.target }} Safari + needs: compare + runs-on: macos-15 + strategy: { fail-fast: false, matrix: { target: [desktop, ios] } } + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - run: sudo safaridriver --enable + - if: matrix.target == 'ios' + run: node packages/rxjs/test/release/boot-ios-simulator.mjs + - run: pnpm run test:release:safari:${{ matrix.target }} + + wpt: + name: Exact tarballs / pinned Observable WPT + needs: compare + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 + with: { version: 10.34.5, run_install: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + with: { python-version: '3.11' } + - run: sudo apt-get update && sudo apt-get install --yes libatspi2.0-dev libcairo2-dev libgirepository1.0-dev pkg-config + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate + - run: pnpm run test:wpt + + evidence: + name: SBOM, clean release OSV scan, attestations, and authorization summary + needs: [compare, package, node, browser, alternate-runtime, safari, wpt] + runs-on: ubuntu-24.04 + permissions: + attestations: write + contents: read + id-token: write + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: { persist-credentials: false } + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: { name: '${{ env.CORE_ARTIFACT }}', path: .release/candidate } + - name: Install checked npm and generate scripts-disabled local release-train SBOM + run: | + npm_bin=$(node scripts/release/install-pinned-npm.mjs "$RUNNER_TEMP/npm-cli") + echo "$(dirname "$npm_bin")" >> "$GITHUB_PATH" + export PATH="$(dirname "$npm_bin"):$PATH" + npm --version + node scripts/release/generate-release-evidence.mjs .release/candidate + - name: Scan the isolated release train with no monorepo exceptions + uses: google/osv-scanner-action/osv-scanner-action@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8 + with: + scan-args: |- + --format=json + --output-file=.release/candidate/rxjs-${{ needs.compare.outputs.version }}.osv.json + --lockfile=package-lock.json:.release/candidate/rxjs-${{ needs.compare.outputs.version }}.release-lock.json + - run: node scripts/release/release-candidate.mjs record-evidence .release/candidate rxjs-${{ needs.compare.outputs.version }}.osv.json + - name: Attest exact npm tarballs + id: attest + uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0 + with: { subject-path: '.release/candidate/*.tgz' } + - name: Preserve the portable attestation bundle + run: | + cp "${{ steps.attest.outputs.bundle-path }}" ".release/candidate/rxjs-${{ needs.compare.outputs.version }}.intoto.jsonl" + node scripts/release/release-candidate.mjs record-evidence .release/candidate rxjs-${{ needs.compare.outputs.version }}.intoto.jsonl + - name: Publish typed authorization values without staging + run: | + digest=$(node scripts/release/release-candidate.mjs manifest-digest .release/candidate) + { + echo '# RxJS release qualification succeeded' + echo '' + echo 'No npm stage was created. To authorize staging, manually run **Stage qualified RxJS 9 release** with:' + echo '' + echo "- qualification run ID: \`${GITHUB_RUN_ID}\`" + echo "- version: \`${{ needs.compare.outputs.version }}\`" + echo "- release-manifest.json SHA-512: \`${digest}\`" + } >> "$GITHUB_STEP_SUMMARY" + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ env.CANDIDATE_ARTIFACT }} + path: .release/candidate + if-no-files-found: error + retention-days: 30 diff --git a/.github/workflows/release-stage.yml b/.github/workflows/release-stage.yml index ead10d7889..88d6cc76f8 100644 --- a/.github/workflows/release-stage.yml +++ b/.github/workflows/release-stage.yml @@ -1,252 +1,144 @@ -name: Qualify and stage release +name: Stage qualified RxJS 9 release on: - push: - branches: ['master'] - paths: - - 'CHANGELOG.md' - - 'packages/migrate/package.json' - - 'packages/observable-polyfill/package.json' - - 'packages/rxjs/package.json' - - 'packages/test/package.json' + workflow_dispatch: + inputs: + qualification_run_id: + description: Successful qualification run ID + required: true + type: string + version: + description: Exact qualified version + required: true + type: string + manifest_sha512: + description: Exact release-manifest.json SHA-512 + required: true + type: string permissions: contents: read concurrency: - group: rxjs-9-release + group: rxjs-9-npm-stage cancel-in-progress: false env: - CANDIDATE_ARTIFACT: rxjs-release-candidate-${{ github.run_id }} + RELEASE_OPERATOR_LOGIN: benlesh RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }} jobs: - build: - name: Build and pack once - runs-on: ubuntu-latest + authorize: + name: Verify typed manual authorization without npm authority + if: github.ref == 'refs/heads/master' && github.actor == 'benlesh' + runs-on: ubuntu-24.04 outputs: - pull-request: ${{ steps.authorize.outputs.pull-request }} - version: ${{ steps.candidate.outputs.version }} - channel: ${{ steps.candidate.outputs.channel }} + source-commit: ${{ steps.details.outputs.source-commit }} + pull-request: ${{ steps.details.outputs.pull-request }} permissions: - attestations: write + actions: read contents: read - id-token: write pull-requests: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: - version: 10.34.5 - run_install: false + with: { ref: '${{ github.sha }}', fetch-depth: 0, persist-credentials: false } - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: { node-version: '24.12.0', package-manager-cache: false } + - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 with: - node-version: '24' - package-manager-cache: false - - - name: Verify that a merged secure release PR authorized this commit - id: authorize + github-token: ${{ github.token }} + run-id: ${{ inputs.qualification_run_id }} + name: rxjs-release-candidate-${{ inputs.qualification_run_id }} + path: .release/candidate + - name: Reject wrong actor, run, branch, commit, version, digest, expiry, bytes, or replay env: GH_TOKEN: ${{ github.token }} - run: | - pr_number=$(node scripts/release/authorize-release-commit.mjs "$GITHUB_REPOSITORY" "$GITHUB_SHA") - echo "pull-request=$pr_number" >> "$GITHUB_OUTPUT" - - - name: Fresh frozen dependency install - run: pnpm install --frozen-lockfile - - name: Verify release policy and repository configuration + RELEASE_ACTOR: ${{ github.actor }} + run: >- + node scripts/release/authorize-stage.mjs "$GITHUB_REPOSITORY" + "${{ inputs.qualification_run_id }}" "${{ inputs.version }}" + "${{ inputs.manifest_sha512 }}" .release/candidate + - name: Reconfirm the generated release PR authorized this exact commit env: GH_TOKEN: ${{ github.token }} - NPM_STAGED_PACKAGES_URL: ${{ vars.NPM_STAGED_PACKAGES_URL }} - RELEASE_REQUIRED_CHECKS: ${{ vars.RELEASE_REQUIRED_CHECKS }} - RELEASE_TAG_RULESET_ID: ${{ vars.RELEASE_TAG_RULESET_ID }} run: | - pnpm run release:check - node scripts/release/release-doctor.mjs --strict - - name: Build release packages - run: pnpm run prepare-packages - - name: Pack, inventory, and hash the candidate once - id: candidate + expected=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").authorizingPullRequest)') + actual=$(node scripts/release/authorize-release-commit.mjs "$GITHUB_REPOSITORY" "$(git rev-parse HEAD)") + test "$actual" = "$expected" + - id: details run: | - node scripts/release/release-candidate.mjs build .release/candidate - echo "version=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").version)')" >> "$GITHUB_OUTPUT" - echo "channel=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").channel)')" >> "$GITHUB_OUTPUT" - - name: Attest every exact npm tarball - uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0 - with: - subject-path: '.release/candidate/*.tgz' - - name: Preserve exact candidate for qualification jobs - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.CANDIDATE_ARTIFACT }} - path: .release/candidate - if-no-files-found: error - retention-days: 14 - - node: - name: Exact tarballs / Node ${{ matrix.node }}${{ matrix.advisory && ' (advisory)' || '' }} - needs: build - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.advisory }} - strategy: - fail-fast: false - matrix: - include: - - node: '22.13.0' - advisory: false - - node: '24' - advisory: false - - node: '26' - advisory: true - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { persist-credentials: false } - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: { version: 10.34.5, run_install: false } - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '${{ matrix.node }}', package-manager-cache: false } - - run: pnpm install --frozen-lockfile - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate - - run: pnpm run test:release:runtime - - browser: - name: Exact tarballs / browsers, Webpack, performance - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { persist-credentials: false } - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: { version: 10.34.5, run_install: false } - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } - - run: pnpm install --frozen-lockfile - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate - - run: pnpm exec playwright install --with-deps chromium firefox webkit - - run: pnpm run test:release:browsers && pnpm run test:release:webpack && pnpm run test:release:performance - - alternate-runtime: - name: Exact tarballs / ${{ matrix.runtime }} - needs: build - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: { runtime: [deno, bun] } - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { persist-credentials: false } - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: { version: 10.34.5, run_install: false } - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } - - run: pnpm install --frozen-lockfile - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate - - if: matrix.runtime == 'deno' - uses: denoland/setup-deno@667a34cdef165d8d2b2e98dde39547c9daac7282 # v2.0.5 - with: { deno-version: v2.8.0 } - - if: matrix.runtime == 'bun' - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - with: { bun-version: 1.3.14 } - - if: matrix.runtime == 'deno' - run: deno run --allow-read packages/rxjs/test/release/runtime-contract.mjs - - if: matrix.runtime == 'bun' - run: bun packages/rxjs/test/release/runtime-contract.mjs - - safari: - name: Exact tarballs / ${{ matrix.target }} Safari - needs: build - runs-on: macos-15 - strategy: - fail-fast: false - matrix: { target: [desktop, ios] } - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { persist-credentials: false } - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: { version: 10.34.5, run_install: false } - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } - - run: pnpm install --frozen-lockfile - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate - - run: sudo safaridriver --enable - - if: matrix.target == 'ios' - run: node packages/rxjs/test/release/boot-ios-simulator.mjs - - run: pnpm run test:release:safari:${{ matrix.target }} - - wpt: - name: Exact tarballs / pinned Observable WPT - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { persist-credentials: false } - - uses: pnpm/action-setup@9fd676a19091d4595eefd76e4bd31c97133911f1 # v4.2.0 - with: { version: 10.34.5, run_install: false } - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: { python-version: '3.11' } - - run: sudo apt-get update && sudo apt-get install --yes libatspi2.0-dev libcairo2-dev libgirepository1.0-dev pkg-config - - run: pnpm install --frozen-lockfile - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - run: node scripts/release/release-candidate.mjs verify .release/candidate && node scripts/release/release-candidate.mjs hydrate .release/candidate - - run: pnpm run test:wpt + echo "source-commit=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").sourceCommit)')" >> "$GITHUB_OUTPUT" + echo "pull-request=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").authorizingPullRequest)')" >> "$GITHUB_OUTPUT" stage: - name: Create protected tag and stage exact tarballs - needs: [build, node, browser, alternate-runtime, safari, wpt] - runs-on: ubuntu-latest + name: Reverify authorization and stage exact tarballs with npm OIDC + needs: authorize + runs-on: ubuntu-24.04 environment: npm-stage permissions: + actions: read + attestations: read contents: write id-token: write pull-requests: write steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: { fetch-depth: 0, persist-credentials: true } + with: { ref: '${{ needs.authorize.outputs.source-commit }}', fetch-depth: 0, persist-credentials: true } - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: { node-version: '24', package-manager-cache: false } + with: { node-version: '24.12.0', package-manager-cache: false } - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - with: { name: '${{ env.CANDIDATE_ARTIFACT }}', path: .release/candidate } - - name: Verify candidate again and require staged-publishing npm + with: + github-token: ${{ github.token }} + run-id: ${{ inputs.qualification_run_id }} + name: rxjs-release-candidate-${{ inputs.qualification_run_id }} + path: .release/candidate + - name: Recheck current head, retained bytes, typed digest, and replay immediately before staging + env: + GH_TOKEN: ${{ github.token }} + RELEASE_ACTOR: ${{ github.actor }} + run: >- + node scripts/release/authorize-stage.mjs "$GITHUB_REPOSITORY" + "${{ inputs.qualification_run_id }}" "${{ inputs.version }}" + "${{ inputs.manifest_sha512 }}" .release/candidate + - name: Reconfirm the generated release PR again in the privileged job + env: + GH_TOKEN: ${{ github.token }} + run: | + expected="${{ needs.authorize.outputs.pull-request }}" + actual=$(node scripts/release/authorize-release-commit.mjs "$GITHUB_REPOSITORY" "$(git rev-parse HEAD)") + test "$actual" = "$expected" + - name: Install the checked npm CLI only after registry SHA-512 verification + run: | + npm_bin=$(node scripts/release/install-pinned-npm.mjs "$RUNNER_TEMP/npm-cli") + echo "$(dirname "$npm_bin")" >> "$GITHUB_PATH" + - name: Verify GitHub attestations and candidate bytes again + env: + GH_TOKEN: ${{ github.token }} run: | - npm install --global npm@11.18.0 node scripts/release/release-candidate.mjs verify .release/candidate - - name: Create the protected candidate tag and draft evidence release + for tarball in .release/candidate/*.tgz; do gh attestation verify "$tarball" --repo "$GITHUB_REPOSITORY"; done + - name: Create protected candidate tag and draft evidence release env: GH_TOKEN: ${{ github.token }} - VERSION: ${{ needs.build.outputs.version }} + VERSION: ${{ inputs.version }} run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git tag --annotate "$VERSION" --message "RxJS $VERSION qualified release candidate" git push origin "refs/tags/$VERSION" gh release create "$VERSION" --draft --verify-tag --title "RxJS $VERSION" --notes-file CHANGELOG.md .release/candidate/* - - name: Stage the exact attested tarballs with stage-only OIDC + - name: Stage exact attested tarballs with stage-only npm OIDC run: node scripts/release/stage-release.mjs publish .release/candidate .release/staged-release.json - - name: Comment approval links, hashes, stage IDs, order, and CLI fallback + - name: Comment WebAuthn approval links, hashes, stage IDs, order, and CLI fallback if: always() env: GH_TOKEN: ${{ github.token }} NPM_STAGED_PACKAGES_URL: ${{ vars.NPM_STAGED_PACKAGES_URL }} - PR_NUMBER: ${{ needs.build.outputs.pull-request }} run: | test -f .release/staged-release.json + pr_number=$(node -e 'console.log(require("./.release/candidate/release-manifest.json").authorizingPullRequest)') node scripts/release/stage-release.mjs comment .release/candidate .release/staged-release.json > "$RUNNER_TEMP/staging-comment.md" - gh pr comment "$PR_NUMBER" --body-file "$RUNNER_TEMP/staging-comment.md" + gh pr comment "$pr_number" --body-file "$RUNNER_TEMP/staging-comment.md" - name: Preserve staging receipt if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.gitignore b/.gitignore index e965e4b9fe..37f51307fb 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ integration/import/**/rx.json integration/import/**/operators.json -.nx/cache +.nx/ # Generated Observable WPT runner, browser, shadow tree, and reports .cache/rxjs-wpt/ diff --git a/README.md b/README.md index 6d54889037..1962a48a30 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,6 @@ [![CI](https://img.shields.io/github/actions/workflow/status/ReactiveX/rxjs/ci_main.yml?branch=master&style=flat-square&label=CI)](https://github.com/ReactiveX/rxjs/actions/workflows/ci_main.yml?query=branch%3Amaster) [![Release readiness](https://img.shields.io/github/actions/workflow/status/ReactiveX/rxjs/release-readiness.yml?branch=master&style=flat-square&label=release%20readiness)](https://github.com/ReactiveX/rxjs/actions/workflows/release-readiness.yml?query=branch%3Amaster) [![Observable WPT](https://img.shields.io/github/actions/workflow/status/ReactiveX/rxjs/observable-wpt.yml?branch=master&style=flat-square&label=Observable%20WPT)](https://github.com/ReactiveX/rxjs/actions/workflows/observable-wpt.yml?query=branch%3Amaster) -[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ReactiveX/rxjs/badge)](https://scorecard.dev/viewer/?uri=github.com/ReactiveX/rxjs) - [![npm stable](https://img.shields.io/npm/v/rxjs/latest?style=flat-square&label=npm%20stable)](https://www.npmjs.com/package/rxjs?activeTab=versions) [![npm next](https://img.shields.io/npm/v/rxjs/next?style=flat-square&label=npm%20next)](https://www.npmjs.com/package/rxjs?activeTab=versions) [![npm downloads](https://img.shields.io/npm/dm/rxjs?style=flat-square&label=downloads)](https://www.npmjs.com/package/rxjs) @@ -78,6 +76,9 @@ Import the Symbol and call it with bracket syntax. A platform method such as Release support, budgets, and exact environment gates are documented in the [`rxjs` package](packages/rxjs/docs/RELEASE_GATES.md). The irreversible npm publication process is the public [secure release runbook](docs/RELEASE_PROCESS.md). +The [RxJS 9 security-assurance document](packages/rxjs/docs/SECURITY_ASSURANCE.md) +explains the release evidence, verification commands, sole-maintainer model, +and OpenSSF Scorecard in context. Repository-wide design records live in [`docs/rxjs-next`](docs/rxjs-next/PROJECT_CHARTER.md). diff --git a/SECURITY.md b/SECURITY.md index 6251ca35c7..5f5b3158b9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,13 +1,27 @@ -# Security Policy +# RxJS security policy -## Supported Versions +RxJS currently has one active maintainer. The same maintainer may author, review, merge, and release a change. The project does not claim independent human review; release safety relies on mandatory automation, reproducible artifacts, narrow credentials, separate GitHub/npm authorization, and public verification evidence. -Security updates are applied only to the latest release. +## Supported versions -## Reporting a Vulnerability +| Release line | Status | Security support | +| ------------------ | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | +| RxJS 9.x | Prerelease until stable | The latest published 9.x prerelease receives security fixes while the beta is active. | +| RxJS 7.x | Production `latest` during the RxJS 9 beta | The latest 7.x release receives security fixes and high-severity correctness or ecosystem-compatibility fixes. | +| RxJS 6.x and older | End of life | No security updates. | -If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. Besides, make sure to align with us before any public disclosure to ensure no dangerous information goes public too soon. +When RxJS 9 becomes stable, its latest release becomes the supported production line. Any future change to RxJS 7 support will be announced separately; this policy does not invent a sunset date. -Please disclose it at [security advisory](https://github.com/ReactiveX/rxjs/security/advisories/new). +## Report a vulnerability privately -Although we will be working to solve any security issue as fast as possible, it is also important to notice that, in accordance with Apache 2.0 terms, no RxJS contributor can be liable for damages, including the ones caused by a security issue. +Do not open a public issue for a suspected vulnerability. Use a [private GitHub security advisory](https://github.com/ReactiveX/rxjs/security/advisories/new) and include the affected version, impact, reproduction, and any known workaround. + +The maintainer targets: + +- acknowledgment within five business days; +- an initial assessment within ten business days; +- case-specific remediation and coordinated-disclosure timing after assessment. + +These are response targets, not guaranteed fix deadlines. If investigation or coordination takes longer, the reporter will receive an update explaining the delay and the next expected checkpoint. + +See [RxJS 9 security assurance](packages/rxjs/docs/SECURITY_ASSURANCE.md) for release controls, verification commands, limitations, and the current supply-chain evidence model. diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index 8f8fcab93d..e1bfce5202 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -2,193 +2,81 @@ ## Basic steps -1. Merge an ordinary PR into `master`. -2. Wait for all required `master` checks. -3. Review the automatically generated release PR. -4. Merge the release PR to authorize qualification. -5. Wait while GitHub builds, tests, attests, and stages the exact packages. -6. Open the linked npm Staged Packages page. -7. Approve all four packages with TFA, approving `rxjs` last. -8. GitHub creates the immutable release after all packages are available. +1. Ben merges an ordinary pull request into `master`. +2. After required `master` checks pass, automation creates or refreshes the generated release PR. +3. Ben reviews and self-merges that release PR. No approving review is required. +4. GitHub qualifies the candidate and stops without creating an npm stage. +5. Ben copies the qualification run ID, exact version, and `release-manifest.json` SHA-512 from the successful run summary into **Stage qualified RxJS 9 release**. +6. GitHub revalidates the run, current `master` commit, release PR, retained bytes, digest, age, and replay state, then creates npm stages. +7. Ben opens npm Staged Packages and approves all four packages with WebAuthn, approving `rxjs` last. +8. GitHub verifies registry integrity, npm signatures/provenance, and GitHub attestations before publishing the immutable GitHub Release. + +Merging an ordinary PR automatically creates or refreshes the release PR. That automation is not a security problem: it changes only reviewable release metadata on an allowlisted branch. The later typed run/version/digest authorization exists so an accidental or compromised release-PR merge cannot immediately create publishable npm stages. ## Security considerations -- npm publication is irreversible for RxJS. -- Everything must be verified before npm approval. -- The files tested are the exact tarballs sent to npm staging. -- Any byte change invalidates the candidate. -- CI may stage but cannot publish directly. -- No long-lived npm publishing token exists. -- TFA approval is required for every package. -- The four-package train is not atomic; supporting packages are approved before `rxjs`. -- Post-publication checks perform bookkeeping only and are not safety gates. -- Release workflows run only from trusted, merged commits on GitHub-hosted runners. -- Workflow changes, package manifests, release scripts, and tag rules are protected. - -## Normal release flow - -Ordinary PRs use a validated Conventional Commit title because the squash-merge -title becomes the version-selection input. After the required checks pass on -the exact `master` commit, a narrowly scoped organization-owned GitHub App -creates or refreshes one release PR and requests review from the configured -release maintainer. A new releasable merge regenerates that PR; branch rules -must dismiss its prior approval. - -The release PR shows the proposed version and npm channel, selection reason, -categorized changelog, synchronized versions for all four packages, commit -range, affected packages, irreversible-publication warning, and a prominent -**Open npm Staged Packages** link. Merging it is the GitHub-side “release this -version” action. It does not publish anything. - -The trusted workflow uses a fresh GitHub-hosted runner and frozen lockfile with -no restored dependency or build cache. It builds and packs once, records the -source commit, contents, sizes, and SHA-512 digests, creates GitHub artifact -attestations, and passes the same tarballs through all blocking runtime, -browser, bundler, package, and conformance gates. Only then does it create the -protected version tag and send those `.tgz` files by filename to npm staging -through stage-only OIDC. Staging cannot rebuild, repack, rewrite versions, or -add files. Automation downloads every private npm stage and requires its -SHA-512 to match the qualified and GitHub-attested tarball before presenting -approval instructions. - -After staging, automation comments on the merged release PR with one prominent -npm Staged Packages link, a supported direct stage link when npm returns one, -and each package's version, dist-tag, stage ID, approved digest, required order, -and exact `npm stage approve ` fallback. Displayed npm links must use -the exact `https://www.npmjs.com/` origin. Automation never guesses an -undocumented route. - -Approve in this order, checking every value before each TFA prompt: +- RxJS currently has one maintainer. The process requires no second reviewer, team, CODEOWNER approval, or environment reviewer. +- Pull requests provide a visible diff and mandatory automated checks; they do not imply independent human approval. +- Two separate human decisions exist: merge the generated release PR, then manually authorize its qualified digest for npm staging. +- npm publication is irreversible for RxJS. A pre-stage failure has no npm effect. +- The files tested twice are the exact tarballs staged. Any changed, missing, or additional byte invalidates the candidate. +- CI can call only `npm stage publish` through OIDC. It has no long-lived npm publishing token and cannot call direct `npm publish`. +- GitHub and npm both use WebAuthn security keys or passkeys. Recovery codes are stored offline. +- Compromise of both Ben's GitHub and npm authentication can still compromise a release. + +## Automatic release PR + +Ordinary pull requests use Conventional Commit titles because the squash title is the version-selection input. A successful merge to `master` runs the configured checks and causes the narrowly scoped release App to create or refresh `release/rxjs-9`. The generated PR contains the proposed version, channel, changelog, synchronized package versions, affected packages, and policy diff. It requests no reviewer. + +During `9.0.0-beta.N`, fixes, features, and breaking changes increment only `beta.N`. Stable promotion is an explicit **Generate release PR** mode. After stable 9.x, fixes increment patch, features increment minor, and a breaking change blocks the 9.x train because SemVer requires 10.0.0. Documentation-only and internal chores do not produce a release. + +## Read-only qualification + +Self-merging the generated PR starts **Qualify RxJS 9 release**. Two separate fresh `ubuntu-24.04` jobs use Node 24.12.0 and pnpm 10.34.5, frozen installs, and no restored caches. They independently build and pack the four packages. Qualification fails unless filenames, inventories, contents, and SHA-512 values are byte-identical. + +The canonical first build then passes every blocking Node, browser, Safari, Deno, Bun, Webpack, performance, package, and pinned Observable WPT gate. A scripts-disabled local installation of the exact tarballs produces a CycloneDX SBOM and release-only lockfile. A SHA-pinned OSV scan uses no monorepo exceptions. GitHub attests the exact tarballs. + +The retained 30-day artifact contains: + +- `release-manifest.json`; +- `rxjs-.intoto.jsonl`; +- `rxjs-.cdx.json`; +- `rxjs-.osv.json`; +- `rxjs-.release-lock.json`; +- all exact npm tarballs. + +Qualification creates no tag, GitHub Release, npm stage, or npm publication. Its summary prints the three values required for manual staging. + +## Manual digest authorization and npm approval + +Only GitHub login `benlesh` may dispatch `.github/workflows/release-stage.yml`, and it must be dispatched from protected `master`. The workflow rejects a wrong run ID, workflow, event, branch, actor, version, digest, source commit, current head, release PR, failed or older-than-30-day run, expired artifact, changed inventory/bytes, or replayed version. + +Those checks first run in a job with no npm environment and no OIDC permission. Only after it succeeds can the separate `npm-stage` job start; that job rechecks current head, retained bytes, digest, release PR, and replay state before staging. npm trusted publishing must be bound to `ReactiveX/rxjs`, `.github/workflows/release-stage.yml`, protected `master`, and `npm-stage`, with stage-only authority. npm 11.18.0 is downloaded only after its checked-in registry SHA-512 matches. + +Approve with WebAuthn in this order: 1. `@rxjs/observable-polyfill` 2. `@rxjs/test` 3. `@rxjs/migrate` 4. `rxjs` last -The finalizer has no npm credentials or authority. It waits until all four -public registry integrities match the qualified manifest, then publishes the -draft GitHub Release. Release immutability locks its tag and assets. A future -documentation deployment may consume that completed release event, but gets no -npm authority and is not a publication gate. +Automation downloads every private stage and compares its bytes before showing approval instructions. If staging is partial or any value differs, approve nothing: reject every stage and qualify a fresh version. Staging attempts cannot be replayed because creation of the protected version tag and draft release precedes npm staging. + +## Final verification + +The finalizer has no npm credentials or publishing authority. It waits for all four public packages, compares each registry integrity to the manifest, verifies `npm audit signatures`, and verifies GitHub attestations for every tarball. Only then does it publish the draft GitHub Release. + +## One-time setup before beta -## Version-selection scenarios - -### Changes during `9.0.0-beta.N` +1. Protect `master`: require pull requests with zero approvals, require CI, CodeQL, dependency review, OSV, workflow validation, release coherence, WPT, and release readiness; require verified squash commits; prevent force-push and deletion. +2. Configure the release App with only checks read plus contents and pull-request write access. Store `RELEASE_APP_ID`, `RELEASE_APP_PRIVATE_KEY`, and the exact `RELEASE_REQUIRED_CHECKS` list. +3. Restrict `release/rxjs-9` updates to the release App's guarded force-with-lease refresh. +4. Restrict the `npm-stage` environment to protected `master` with no reviewer and no secret. +5. Configure all four npm trusted publishers for the stage workflow and environment. Require WebAuthn and disallow publish-capable tokens; delete any reusable publication credential. +6. Verify the authenticated npm Staged Packages URL and store it as `NPM_STAGED_PACKAGES_URL`. +7. Protect `refs/tags/9.*` from update, deletion, and force-push; allow only the staging workflow to create a tag. Enable GitHub Release immutability. +8. Run the release doctor and rehearse qualification, typed digest authorization, stage inspection, rejection, restaging, WebAuthn approval, provenance, attestations, and finalization using existing disposable packages controlled only by Ben. -- **Release maintainer does:** Merge the ordinary PR, merge the generated release PR, open the supplied npm link, and approve four stages. -- **Release maintainer sees:** `9.0.0-beta.N+1`, channel `next`, with fixes, features, and breaking changes categorized separately. -- **GitHub automation does:** Increments only the beta counter, generates changelogs, qualifies exact tarballs, and stages them. -- **npm does:** Keeps every package private until TFA approval. - -Stable promotion is explicit. Run **Generate release PR**, choose **Change -release mode → Promote stable**, and review the regenerated release PR. It -changes the next beta to `9.0.0` on `latest`; an ordinary merge cannot promote -stable accidentally. - -### A fix merges after stable 9.x - -- **Release maintainer does:** Merge the fix PR, merge the generated patch-release PR, and approve the linked npm stages. -- **Release maintainer sees:** `9.0.N+1`, channel `latest`, the patch changelog, qualified hashes, and qualification results. -- **GitHub automation does:** Classifies `fix`, `perf`, and `revert` as patch changes and versions all packages together. -- **npm does:** Leaves `rxjs@latest` unchanged until `rxjs` is approved last. - -### A feature merges after stable 9.x - -- **Release maintainer does:** Follow the release-PR and npm TFA flow. -- **Release maintainer sees:** `9.N+1.0`, channel `latest`, containing the feature and accumulated fixes. -- **GitHub automation does:** Uses the highest accumulated change level, so a feature plus fixes produces a minor release. -- **npm does:** Holds all packages in staging until their individual approvals. - -### A breaking change merges during beta - -- **Release maintainer does:** Follow the ordinary beta flow. -- **Release maintainer sees:** The next beta with a prominent breaking-change section. -- **GitHub automation does:** Increments `beta.N` without changing the `9.0.0` core. -- **npm does:** Publishes only after TFA approval. - -### A breaking change merges after stable `9.0.0` - -- **Release maintainer does:** Revert or redesign the change, or explicitly establish an RxJS 10 workstream. -- **Release maintainer sees:** A blocked release report explaining that SemVer requires `10.0.0`; no release Merge button is available. -- **GitHub automation does:** Refuses to generate or stage a 9.x release and closes any stale 9.x release PR. -- **npm does:** Nothing. - -Documentation-only and internal chore commits do not trigger releases. For -accumulated stable changes, `breaking > feature > fix` determines the result. - -## One-time administrator setup - -Complete and rehearse these controls before `9.0.0-beta.0`: - -1. Create the `@ReactiveX/release-maintainers` team and verify `.github/CODEOWNERS` resolves to it. -2. Create an organization-owned GitHub App with only repository contents and pull-request write access plus checks read access. Store `RELEASE_APP_ID` and `RELEASE_APP_PRIVATE_KEY`. -3. Set `RELEASE_MAINTAINER_LOGIN` and comma-separated `RELEASE_REQUIRED_CHECKS` repository variables. Require those checks, require squash merges, and dismiss stale approvals. -4. Sign in to npm, manually open and verify the authenticated Staged Packages application, then store that exact URL in `NPM_STAGED_PACKAGES_URL`. Do not infer it from this document. -5. Configure each package's trusted publisher for `.github/workflows/release-stage.yml`, allowing only `npm stage publish`. Require TFA and disallow tokens for publishing access. -6. Delete `NPM_TOKEN` and every granular token able to bypass TFA or publish these packages. -7. Create an `npm-stage` GitHub environment restricted to protected `master`. It contains no npm secret. -8. Protect `master`, `CODEOWNERS`, workflows, actions, release scripts, manifests, lockfile, and changelog through code-owner review and required checks. Protect `release/rxjs-9` so only the release App can update it; the App uses guarded force-with-lease updates to refresh the one open release PR. -9. Add an active tag ruleset for `refs/tags/9.*` restricting creation, update, deletion, and force-push. Allow the GitHub Actions App to bypass it only because protected release code is the sole workflow with tag-write authority. Store its numeric ID in `RELEASE_TAG_RULESET_ID` so the doctor can inspect it. -10. Enable GitHub Release immutability. A draft remains mutable evidence; the finalizer publishes it only after registry integrities match. -11. Complete the disposable-package rehearsal and run **Release doctor** manually. - -The read-only release doctor checks action pins, workflow structure, absence of -direct `npm publish` and token references, channel policy, package identities, -configured required checks, active RxJS 9 tag rules, the exact npm-link origin, -and runbook freshness. If npm changes the route, the doctor fails while release -comments still provide stage IDs and CLI commands. - -## Rehearsal and failure handling - -Use an existing disposable package because npm cannot stage a brand-new -package. Rehearse stage-only OIDC, exact-tarball submission, TFA approval and -rejection, link generation, attestations, protected tags, partial staging, and -finalization. Confirm the staged download digest equals both the qualified -manifest and GitHub-attested digest. - -A pre-stage failure has no npm effect. If staging fails, stop and reject every -stage created by that run with TFA. The receipt and release-PR comment identify -partial state. Never resume with altered files: reject, create a fresh version, -and repeat full qualification. Approve `rxjs` last because partial publication -cannot be rolled back. - -Before the first beta, confirm with npm that all four packages can use staged -publishing under RxJS's package status. If a new package is ineligible, use a -one-time bootstrap: - -1. Download the CI-qualified candidate bundle. -2. Verify GitHub attestations and every SHA-512 in `release-manifest.json`. -3. Publish each existing `.tgz` by filename without building, versioning, or packing. -4. Complete npm TFA for every package, publishing `rxjs` last. -5. Configure all four stage-only trusted publishers and rerun the doctor. - -The reviewed one-time command implements those steps without rebuilding or -packing. Run it only from a clean maintainer machine after replacing `` -with the trusted qualification run: - -```sh -node scripts/release/bootstrap-release.mjs --run-id --acknowledge-irreversible-bootstrap -``` - -It downloads the candidate, verifies every manifest hash and GitHub -attestation, refuses npm token environment variables, and invokes interactive -TFA publication in the required order. It is not called by any workflow. - -## Succession and maintenance - -This public runbook contains every non-secret operational step and uses role -names. The private designated-successor packet must contain no passwords, -private keys, TFA seeds, recovery codes, or tokens. Keep it in the approved -private records system using -`docs/release/PRIVATE_SUCCESSION_PACKET.template.md`. It records organization -and package inventories, vendor contact paths, proof locations, and transfer -instructions using the successor's own accounts and TFA. Configure an annual -private reminder there; do not create a public repository issue. - -OpenSSF Scorecard, CodeQL, dependency review, and the monthly release doctor -remain continuous controls. Dependabot proposes reviewed updates to SHA-pinned -actions. Annually, repeat the staging rehearsal, review checks and owners, -verify the npm URL manually, validate action pins and runtime versions, and -update this runbook and private packet together. +The repository cannot configure GitHub/npm account WebAuthn, rulesets, environments, trusted publishers, or perform the disposable npm rehearsal from source code. P6.10 remains active until that external evidence exists. Last reviewed: 2026-08-02. diff --git a/docs/release/PRIVATE_SUCCESSION_PACKET.template.md b/docs/release/PRIVATE_SUCCESSION_PACKET.template.md deleted file mode 100644 index c239912a19..0000000000 --- a/docs/release/PRIVATE_SUCCESSION_PACKET.template.md +++ /dev/null @@ -1,34 +0,0 @@ -# Private release succession packet template - -Do not fill in or commit a completed copy. Store it in the organization's -approved private records system. Never include passwords, private keys, TFA -seeds, recovery codes, session cookies, or reusable tokens. - -## Ownership inventory - -- GitHub organization, repository, release App, protected environments, owner teams, and rulesets -- npm organization, four packages, maintainers, trusted publishers, and publishing-access settings -- Domain, documentation, security-reporting, and vendor-support ownership relevant to releases - -## Evidence locations - -- Public release runbook and release-doctor workflow -- GitHub ruleset and immutable-release configuration evidence -- npm trusted-publisher and publishing-access evidence -- Most recent disposable-package rehearsal and recovery exercise - -## Vendor contact paths - -- GitHub organization support and required ownership-change proof -- npm support for the RxJS package status and required authority-transfer proof -- Organization contact able to attest project authority - -## Authority-transfer procedure - -1. Verify the successor through independent governance. -2. Add the successor's own GitHub account to the release-maintainer team. -3. Add the successor's own npm account and require its own TFA enrollment. -4. Have the successor verify the runbook, doctor, rulesets, App, and trusted publishers. -5. Rehearse stage, inspect, reject, restage, TFA approval, and finalization on a disposable package. -6. Remove superseded accounts and rotate App credentials through vendor-supported controls. -7. Record the review date and next annual private reminder without copying secrets. diff --git a/docs/rxjs-next/ARCHITECTURE.md b/docs/rxjs-next/ARCHITECTURE.md index 3008eca8c7..d5c9c73f89 100644 --- a/docs/rxjs-next/ARCHITECTURE.md +++ b/docs/rxjs-next/ARCHITECTURE.md @@ -62,6 +62,31 @@ flowchart LR Tooling -.-> Legacy ``` +## Single-maintainer release boundary + +RxJS 9 explicitly assumes one human author, reviewer, merger, release operator, +and security responder. Pull requests expose changes and run required checks; +they are not evidence of independent approval. An ordinary successful merge to +`master` automatically creates or refreshes a generated release PR. Self-merging +that PR starts read-only qualification only. + +Qualification uses two independent fresh Ubuntu 24.04 jobs with exact Node +24.12.0 and pnpm 10.34.5. The release continues only when package filenames, +inventories, contents, and SHA-512 values are byte-identical. All package, +runtime, browser, Safari, alternate-runtime, Webpack, performance, WPT, SBOM, +OSV, and attestation evidence is bound to the canonical tarballs. The workflow +then stops and exposes its run ID, version, source commit, and manifest SHA-512. + +A separate manual dispatch by `benlesh` must reproduce the run ID, version, and +digest. It revalidates the protected branch/current commit, generated release +PR, retained bytes, run success/age, and replay state before the `npm-stage` +environment receives OIDC authority limited to `npm stage publish`. npm WebAuthn +approval is a second account boundary. Final GitHub Release publication has no +npm authority and requires registry integrity, npm signature/provenance, and +GitHub attestation verification. This architecture reduces accidental and +single-account release compromise; it cannot eliminate compromise of both the +maintainer's GitHub and npm authentication. + Useful producer-per-subscription values and Subjects remain intentional APIs inside `rxjs`; they do not form a separate compatibility layer or package. Migration tooling is not a runtime dependency. diff --git a/docs/rxjs-next/DECISIONS.md b/docs/rxjs-next/DECISIONS.md index abe71bea24..52e5001333 100644 --- a/docs/rxjs-next/DECISIONS.md +++ b/docs/rxjs-next/DECISIONS.md @@ -1421,8 +1421,10 @@ Status meanings: - **Status:** Accepted - **Decision:** The root README reports `master` CI, release readiness, pinned - Observable WPT, npm `latest` and `next`, downloads, license, and attested - OpenSSF Scorecard status through source-linked badges. It distinguishes the + Observable WPT, npm `latest` and `next`, downloads, and license through + source-linked badges. The security-assurance document presents OpenSSF + Scorecard as a contextual repository-hygiene signal rather than a headline + release claim. It distinguishes the planned `9.0.0-beta.0` from the older prerelease currently on npm `next` and does not instruct users to install RxJS 9 from that tag before publication. - **Security automation:** A weekly and `master`-push Scorecard workflow @@ -1442,37 +1444,50 @@ Status meanings: changes no runtime API, export, type, package artifact, or `apps/rxjs.dev` boundary. -## D-057 — Use release PRs, exact-tarball qualification, and npm staged approval +## D-057 — Use a single-maintainer, reproducible, manually authorized staged release - **Status:** Accepted -- **Decision:** RxJS 9 releases from `master` use one generated release PR as - their GitHub-side authorization. Conventional Commit titles select the +- **Decision:** Ben Lesh is the sole required author, reviewer, merger, release + operator, and security responder. RxJS 9 releases from `master` use a + generated release PR as a reviewable version/changelog/policy diff, not as + evidence of independent approval. Ordinary successful merges automatically + create or refresh it. Conventional Commit titles select the version: beta work increments only `beta.N`; stable fixes increment patch; stable features increment minor; and stable breaking changes block the 9.x train. Stable promotion is an explicit mode. All four packages retain one synchronized version. -- **Publication boundary:** Merging the release PR starts a trusted workflow - that builds and packs once, records SHA-512 and contents, attests the - tarballs, and qualifies those exact files in every blocking environment. - The same filenames go through an npm trusted publisher limited to - `npm stage publish`. CI has no long-lived npm token and cannot call direct - `npm publish`. A release maintainer approves every stage with TFA and - approves `rxjs` last. +- **Publication boundary:** Self-merging the release PR starts read-only + qualification. Two independent fresh Ubuntu 24.04 jobs use exact Node + 24.12.0 and pnpm 10.34.5, and the candidate continues only when filenames, + inventories, contents, and SHA-512 values match. Every blocking environment, + the release-only OSV scan, SBOM generation, and attestations operate on those + exact files, then stop. A later manual dispatch by `benlesh` must type the + qualification run ID, exact version, and manifest SHA-512. It rejects wrong, + failed, stale, changed, non-current, unauthorized, expired, or replayed + candidates before the same filenames reach an npm trusted publisher limited + to `npm stage publish`. CI has no long-lived npm token and cannot call direct + `npm publish`. Ben approves every stage with npm WebAuthn and approves `rxjs` + last. - **Irreversibility:** npm publication is a pre-approval safety boundary for RxJS. Post-publication registry checks only finalize the immutable GitHub Release. Any changed byte invalidates a candidate, and partial staging requires rejection plus a fresh fully qualified version. -- **Security:** Only protected merged commits run privileged workflows on fresh - GitHub-hosted runners with a frozen lockfile and no restored caches. Actions - use reviewed full commit SHAs. Code ownership covers workflows, release - scripts, manifests, lockfile, changelog, and CODEOWNERS. SemVer tags and final - GitHub Releases require repository rules and release immutability. -- **Operations:** The authenticated npm Staged Packages URL is a manually - verified repository variable with the exact npm web origin. Comments also - contain stage IDs and CLI fallbacks. The public role-based runbook contains - no secret steps; the private successor packet contains no credentials or TFA - recovery material. -- **Consequence:** Private Nx release imports and the token-based publisher are - removed. Repository-owned policy, candidate, staging, doctor, and finalizer - scripts implement the accepted flow. npm/GitHub account setup and the - disposable-package rehearsal remain administrator gates before publication. +- **Security:** `master` requires pull requests but zero approvals. Required + automation, verified squash commits, and branch/tag protections replace a + nonexistent reviewer team. Privileged workflows reject any initiating login + other than `benlesh`, run on fresh GitHub-hosted runners with frozen installs + and no restored caches, use SHA-pinned actions, and verify the checked npm + 11.18.0 registry SHA-512 before staging. GitHub and npm use WebAuthn; reusable + publish-capable npm tokens are prohibited. Compromise of both maintainer + accounts remains a documented residual risk. +- **Evidence and signal:** Stable release assets include the manifest, exact + tarballs, CycloneDX SBOM, clean isolated OSV report, and portable attestation + bundle. Finalization requires registry integrity, `npm audit signatures`, and + GitHub attestation verification. OpenSSF remains secondary; Code-Review `0` + is accepted rather than manufacturing approvals. +- **Consequence:** Private Nx release imports, the token-based publisher, + reviewer requests, release-team ownership, and succession-role assumptions + are removed. Repository-owned policy, reproducibility, evidence, staging, + doctor, and finalizer scripts implement the accepted flow. GitHub/npm + WebAuthn, ruleset/environment/trusted-publisher setup, and the sole-account + disposable-package rehearsal remain external gates before publication. diff --git a/docs/rxjs-next/PROJECT_PLAN.md b/docs/rxjs-next/PROJECT_PLAN.md index 999281a705..51efe55047 100644 --- a/docs/rxjs-next/PROJECT_PLAN.md +++ b/docs/rxjs-next/PROJECT_PLAN.md @@ -81,7 +81,7 @@ bundle-size reduction. P6.8 completed durable pull-request and `master` CI ownership for every accepted RxJS 9 test and release check. P6.9 implemented truthful status signals and security automation; its first live GitHub results remain external validation. The user has now prioritized P6.10: the secure -release-PR, exact-tarball qualification, npm staged-approval, succession, and +single-maintainer release-PR, reproducible qualification, and manually authorized npm staged-approval maintenance process. RxJS 9 and `9.0.0-beta.0` are selected under D-007. D-053 defines runtime, @@ -1573,8 +1573,9 @@ names. #### P6.9 completion bar - The root README exposes authoritative `master` CI, release-readiness, WPT, - npm channel, download, license, and OpenSSF Scorecard signals plus factual - native-Observable and Symbol-extension badges. + npm channel, download, and license signals plus factual native-Observable and + Symbol-extension badges. The package security-assurance document presents + OpenSSF Scorecard in context rather than as a headline release claim. - Prepublication wording does not claim that `9.0.0-beta.0` is already on npm or direct readers to install the older prerelease currently under `next`. - A SHA-pinned Scorecard workflow publishes attested results and SARIF from @@ -1587,9 +1588,10 @@ names. #### P6.9 implementation evidence -- Added ten source-linked README badges: three `master` workflow signals, +- Initially added ten source-linked README badges: three `master` workflow signals, OpenSSF Scorecard, npm `latest` and `next`, monthly downloads, license, and - two architecture-backed native/Symbol claims. All ten image endpoints + two architecture-backed native/Symbol claims. P6.10 later moved Scorecard to + the security-assurance document because it is secondary to release evidence. The image endpoints returned HTTP 200; workflow and Scorecard destinations resolved, while npm's canonical web pages returned their expected automated-client 403 response. - Corrected the unpublished-beta wording, removed the unsafe `rxjs@next` @@ -1606,35 +1608,41 @@ names. #### P6.10 completion bar -- A public role-based runbook begins with the accepted steps and security - considerations, documents each version scenario consistently, and separates - public operations from the credential-free private succession inventory. -- Deterministic tests cover beta, promotion, patch, minor, accumulated, - documentation-only, stable-breaking, link, order, stage-ID, digest, and - byte-integrity behavior. -- A narrowly scoped organization-owned GitHub App refreshes one allowlisted - release PR after configured `master` checks pass. Merging it is the only - authorization for the privileged workflow. -- Fresh GitHub-hosted jobs build and pack once, attest and qualify the exact - tarballs across every blocking environment, create the protected tag, and - submit the same filenames through stage-only npm OIDC. No direct-publish - command or long-lived npm publishing token remains. -- Administrator setup, disposable-package rehearsal, staged eligibility, - tag/release protection, and the annual private reminder remain explicit +- The public runbook and security-assurance document state that Ben is the sole + author, reviewer, merger, release operator, and security responder. No team, + approving review, CODEOWNER, environment reviewer, or succession role is + required or implied. +- A narrowly scoped release App automatically refreshes one allowlisted release + PR after an ordinary successful `master` merge. Self-merging that PR starts + read-only qualification, not npm staging. +- Two fresh exact-toolchain builds must be byte-identical. Every blocking gate, + the exception-free release OSV scan, SBOM generation, and attestations use the + canonical tarballs. Qualification publishes the run ID, version, and manifest + SHA-512 and then stops. +- Only `benlesh` can manually authorize stage-only npm OIDC by typing all three + values. Tests reject wrong, failed, stale, expired, changed, unauthorized, + non-current, or replayed candidates. npm 11.18.0 is registry-hash verified; + no direct publish command or reusable publishing token remains. +- Root vulnerability paths are classified; only time-bounded `apps/rxjs.dev` + exceptions remain, while the isolated release train has no exceptions. + Bounded and scheduled properties cover release parsing/authorization and the + Observable lifecycle state machine. +- GitHub/npm WebAuthn, protected-branch/tag/environment/trusted-publisher setup, + and the sole-account disposable-package rehearsal remain explicit external pre-publication gates. P6.10 remains active until they are verified. #### P6.10 implementation evidence -- Added repository-owned release policy, release-PR generation, synchronized +- Added repository-owned release policy, automatic release-PR generation, synchronized version/provenance updates, changelog generation, release-bot allowlisting, exact candidate manifests, hash verification, exact-artifact hydration, staged comments, public-integrity finalization, and a read-only doctor. - Replaced private Nx release imports and token publishing with GitHub-App - release PRs, exact-tarball qualification, artifact attestations, stage-only - OIDC, TFA approval order, draft evidence releases, and no-npm-authority - finalization. Added CodeQL, action-pin enforcement, Dependabot, and release - CODEOWNERS. -- Added the public runbook and credential-free succession template. npm routes + release PRs, two-build exact-tarball qualification, artifact attestations, + typed manual staging authorization, stage-only OIDC, WebAuthn approval order, + draft evidence releases, and no-npm-authority finalization. Added CodeQL, + action-pin enforcement, Dependabot, and OSV/property gates. +- Added the sole-maintainer public runbook and security-assurance document. npm routes are never guessed: setup records a manually verified URL, rendering validates its origin, and comments retain stage-ID CLI fallbacks. - Local verification is recorded in the P6.10 session entry. Live App, @@ -3538,14 +3546,13 @@ conformance implementation depends on a runnable harness. ### 2026-08-02 — P6.10 secure staged release implementation - Accepted D-057 and added the irreversible-publication runbook, deterministic - scenarios, exact-tarball boundary, npm-link validation, recovery, bootstrap, - and credential-free succession template. + scenarios, exact-tarball boundary, npm-link validation, recovery, and bootstrap. - Replaced private Nx release APIs and `NPM_TOKEN` publishing with a GitHub-App release PR, protected-commit qualification, artifact attestations, exact-tarball environment gates, stage-only npm OIDC, TFA approval order, and registry-integrity-driven GitHub Release finalization. - Added release policy/candidate/staging tests, the read-only doctor, CodeQL, - full action pin enforcement, action Dependabot, and release CODEOWNERS. No + full action pin enforcement, and action Dependabot. No npm, tag, release, or external-account mutation was performed locally. - Corrected the first PR CI findings by making source-commit binding explicit only at the privileged release boundary and replacing incomplete HTML-comment @@ -3553,3 +3560,34 @@ conformance implementation depends on a runnable harness. - P6.9 is blocked only on its first GitHub-side security runs. P6.10 is the sole `NEXT` item until administrator setup and the disposable-package rehearsal prove the external npm/GitHub controls. + +### 2026-08-02 — P6.10 single-maintainer hardening + +- Replaced every team/reviewer assumption with the accepted single-maintainer + invariant. Ordinary successful merges still automatically create or refresh + the release PR; self-merging it starts read-only qualification. +- Split qualification from staging. Two fresh exact-toolchain builds must match + byte-for-byte, all blocking gates use the canonical tarballs, and the run + stops after publishing its ID, version, and manifest SHA-512. Only `benlesh` + can later type those values. A no-OIDC authorization job validates them before + the protected staging job can start and revalidate for stage-only npm OIDC; + tested rejection covers actor, run, branch, commit, version, digest, expiry, + bytes, and replay. +- Added checked npm 11.18.0 integrity, CycloneDX, exception-free release OSV, + stable attestation assets, registry/signature/attestation finalization, and + consumer verification documentation. Moved Scorecard into that contextual + assurance document and accepted Code-Review `0`. +- Upgraded or overrode every dependency path reachable from release, build, or + test tooling. The remaining 253 npm advisory paths are isolated to excluded + `apps/rxjs.dev`, represented by 176 reviewed OSV IDs expiring 2026-10-31, and + guarded by a path-aware checker. Added bounded PR and scheduled extended + fast-check properties for release controls and Observable lifecycle. +- Local rehearsal produced two byte-identical four-package candidates, hydrated + the retained tarballs, and passed 1,044 package/source tests, all four type and + import suites, migration packing/contracts, the 45-test release/security + suite, workflow formatting, package preparation, and a frozen install. The + broader strict cold compatibility command reproduced the reviewed 2,299-pass, + 39-failure baseline rather than introducing a new failure. +- P6.10 remains the sole `NEXT` item because WebAuthn, GitHub/npm rules and + trusted-publisher configuration, live workflow evidence, and the sole-account + disposable-package rehearsal are external and have not yet been verified. diff --git a/docs/security/LEGACY_DOCS_VULNERABILITIES.md b/docs/security/LEGACY_DOCS_VULNERABILITIES.md new file mode 100644 index 0000000000..a65c3c2881 --- /dev/null +++ b/docs/security/LEGACY_DOCS_VULNERABILITIES.md @@ -0,0 +1,9 @@ +# Legacy documentation dependency vulnerability backlog + +Last reviewed: 2026-08-02. Owner: Ben Lesh (`benlesh`). Next mandatory review: 2026-10-31. + +The inherited `apps/rxjs.dev` Angular 13 toolchain is outside the RxJS 9 package, test, qualification, and publication paths. It is intentionally not changed by the RxJS Next project. A path-aware npm audit on 2026-08-02 classified 253 remaining advisory paths as reachable only from that workspace after all release-reachable findings were removed. + +The matching OSV IDs are temporarily recorded in the root `osv-scanner.toml`. Each exception expires within 90 days. The isolated release-train scan never loads these exceptions. A new or changed advisory path that reaches the repository root or a release package fails CI. + +At each review, regenerate the scan, confirm every dependency path still begins with `apps__rxjs.dev`, remove fixed or obsolete IDs, and either refresh the exception for at most another 90 days or move the documentation application to a separately maintained repository/toolchain. diff --git a/osv-scanner.toml b/osv-scanner.toml new file mode 100644 index 0000000000..d8edd75503 --- /dev/null +++ b/osv-scanner.toml @@ -0,0 +1,882 @@ +# Generated from the reviewed 2026-08-02 OSV/npm path audit. Do not hand-edit. +# Regenerate only after scripts/security/check-osv-exceptions.mjs proves every path remains isolated. + +[[IgnoredVulns]] +id = "GHSA-2328-f5f3-gj25" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-23hp-3jrh-7fpw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-248r-7h7q-cr24" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2cm2-m3w5-gp2f" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2p49-hgcm-8545" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2p57-rm9w-gvfp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2pr8-phx7-x9h3" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2r2c-g63r-vccr" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2v35-w6hq-6mfw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-34x7-hfp2-rc4v" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-35jh-r3h4-6jhm" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-37ch-88jc-xwx2" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-38r7-794h-5758" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-39pv-4j6c-2g6v" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-3h5v-q93c-6h6q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-3rfm-jhwj-7488" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-47x8-96vw-5wg6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-48r7-hpm6-gfxm" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4gmj-3p3h-gm8h" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4v9v-hfq4-rm2v" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4vj7-5mj6-jm8m" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4vvj-4cpr-p986" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4wf5-vphf-c2xc" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-4www-5p9h-95mh" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5375-pq7m-f5r2" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-554w-wpv2-vw27" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-55hx-c926-fr95" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-58c5-g7wp-6w37" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-58qx-3vcg-4xpx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-58w9-8g37-x9v5" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5c6j-r48x-rmvq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5gfm-wpxj-wjgq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5m6q-g25r-mvwx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5rrq-pxf6-6jx5" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-5v2h-r2cx-5xgj" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-64mm-vxmg-q3vj" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-65ch-62r8-g69g" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-66ff-xgx4-vchm" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-677m-j7p3-52f9" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-6785-pvv7-mvg7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-67mh-4wv8-2f99" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-685m-2w69-288q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-692r-grfm-v8x7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-6g55-p6wh-862q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-6hxr-mr5r-9836" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-6j2x-vhqr-qr7q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-6rw7-vpxm-498p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-72xf-g2v4-qvf3" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-75px-5xx7-5xc7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-76c9-3jph-rj3q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-76p7-773f-r4q5" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-76w7-j9cq-rx2j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-776f-qx25-q3cc" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-78xj-cgh5-2h22" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-79cf-xcqc-c78w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-7fh5-64p2-3v2j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-7p89-p6hx-q4fw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-7v5v-9h63-cj86" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-83g3-92jg-28cx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-869p-cjfg-cm3x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8cf7-32gw-wr33" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8fgc-7cc6-rx7x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8fr3-hfg3-gpgp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8gwj-8hxc-285w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8hg8-63c5-gwmx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8qq5-rm4j-mr97" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-8x88-c5mf-7j5w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-95qp-cmmw-mgqv" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-968p-4wvh-cqc8" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-96hv-2xvq-fx4p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-99f4-grh7-6pcq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-99p7-6v5w-7xg8" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9g8x-92q2-p28f" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9gqv-wp59-fq42" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9jgg-88mc-972h" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9ppj-qmqm-q256" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9qj6-qjgg-37qq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9vg3-4rfj-wgcm" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-9wv6-86v2-598j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-c2qf-rxjj-qqgw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-c4cf-2hgv-2qv6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-c7qv-q95q-8v27" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-cchq-frgv-rjh5" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-cfm4-qjh2-4765" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-cm22-4g7w-348p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f23m-r3pf-42rh" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f38q-mgvj-vph7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f3m7-gqxr-g87x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f5vj-f2hx-8m93" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f5x3-32g6-xq36" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-f6ww-3ggp-fr8h" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-ff84-5f28-78qj" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-ffh4-j6h5-pg66" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-fx83-v9x8-x52w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-g644-9gfx-q4q4" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-g954-5hwp-pp24" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-gf8q-jrpm-jvxq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-grj5-jjm8-h35p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-gv2q-mqqv-365m" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-gvwx-54wh-qm9j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-h755-8qp9-cq85" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-hc6q-2mpp-qw7j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-hhq3-ff78-jv3g" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-hjrf-2m68-5959" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-hw58-p9xv-2mjh" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-j759-j44w-7fr8" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jc84-3g44-wf2q" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jggg-4jg4-v7c6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jrmj-c5cx-3cw6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jvwf-75h9-cwgg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-m28w-2pqf-7qgj" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-m4wx-m65x-ghrr" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-m5q2-4fm3-vfqp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-m6fv-jmcg-4jfg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-mp7j-qc5w-4988" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-mpf8-4hx2-7cjg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-mwcw-c2x4-8c55" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-mx8g-39q3-5c79" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-p3vc-36g9-x9gr" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-p6mc-m468-83gw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-p8p7-x288-28g6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-pfrx-2q88-qq97" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-ppp5-5v6c-4jwp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-prjf-86w9-mfqv" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-pxg6-pf52-xh8x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-q3fm-4wcw-g57x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-q67f-28xg-22rw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-q6f4-qqrg-jv6x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-q6x5-8v7m-xcrf" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-q8mj-m7cp-5q26" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qcp4-v2jj-fjx8" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qffp-2rhf-9h96" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qj8w-gfj5-8c6v" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qvjj-29qf-hp7p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qw6h-vgh9-j6wx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qwcr-r2fm-qrc7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qwph-4952-7xr6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qx2v-qp2m-jg93" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-qxh6-94w6-9r5p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r28c-9q8g-f849" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r292-9mhp-454m" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r5fr-rjxr-66jc" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r635-g3xr-vw7x" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r6q2-hw4h-h46w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-r9pm-gxmw-wv6p" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rcm2-22f3-pqv3" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rgjc-h3x7-9mwg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rhx6-c78j-4q9w" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rp36-8xq3-r6c4" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rp65-9cf3-cjxr" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rrrm-qjm4-v8hf" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rv73-9c8w-jp4c" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-rv95-896h-c2vc" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-v27g-jcqj-v8rw" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-v37h-5mfm-c47c" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-v422-hmwv-36x6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-v4hv-rgfq-gp49" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-v6mx-mf47-r5wg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-vmf3-w455-68vh" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-vpq2-c234-7xj6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-vwrp-x96c-mhwq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-w5hq-g745-h8pq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-w5p7-h5w8-2hfq" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-w7fw-mjwx-w883" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-w8wr-v893-vjvp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-wcpc-wj8m-hjx6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-wh4c-j3r5-mjhp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-wp5r-2gw5-m7q7" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-wr3j-pwj9-hqq6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-x4jg-mjrx-434g" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-x6wf-f3px-wcqx" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-x9g3-xrwr-cwfg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-xcpc-8h2w-3j85" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-xq3m-2v4x-88gg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-xv26-6w52-cph6" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-xxjr-mmjv-4gpg" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" diff --git a/package.json b/package.json index 5d7ca314db..ac706db9ba 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "analyze:bundles": "node scripts/analyze-bundles.mjs", "prepare-packages": "pnpm nx run-many -t build,lint,test:circular,dtslint,copy_common_package_files --exclude rxjs.dev", "release": "node scripts/release/release-doctor.mjs", - "release:check": "node --test scripts/analyze-bundles.test.mjs scripts/check-package-docs.test.mjs scripts/check-release-coherence.test.mjs scripts/finalize-esm-package.test.mjs scripts/prerelease-adoption-lib.test.mjs scripts/release/authorize-release-commit.test.mjs scripts/release/release-policy.test.mjs scripts/release/release-candidate.test.mjs scripts/release/stage-release.test.mjs && node scripts/check-package-docs.mjs && node scripts/check-release-coherence.mjs && node scripts/release/release-doctor.mjs", + "release:check": "node --test scripts/analyze-bundles.test.mjs scripts/check-package-docs.test.mjs scripts/check-release-coherence.test.mjs scripts/finalize-esm-package.test.mjs scripts/prerelease-adoption-lib.test.mjs scripts/release/authorize-release-commit.test.mjs scripts/release/authorize-stage.test.mjs scripts/release/install-pinned-npm.test.mjs scripts/release/release-policy.test.mjs scripts/release/release-candidate.test.mjs scripts/release/stage-release.test.mjs scripts/security/check-osv-exceptions.test.mjs && node scripts/security/check-osv-exceptions.mjs && node scripts/check-package-docs.mjs && node scripts/check-release-coherence.mjs && node scripts/release/release-doctor.mjs", "test:bundle-analysis": "node --test scripts/analyze-bundles.test.mjs", "test:workflows": "prettier --check .github/workflows/*.yml .github/actions/install-dependencies/action.yml .github/dependabot.yml", "test:kernel": "pnpm --filter rxjs run test:kernel", @@ -30,22 +30,22 @@ "wpt:update-expectations": "node packages/observable-polyfill/test/wpt/cli.mjs update-expectations" }, "devDependencies": { - "@nx/eslint-plugin": "17.3.2", - "@nx/js": "17.3.2", + "@nx/eslint-plugin": "23.1.1", + "@nx/js": "23.1.1", "@playwright/test": "1.62.1", - "@typescript-eslint/eslint-plugin": "^6.19.0", - "@typescript-eslint/parser": "^6.19.0", + "@typescript-eslint/eslint-plugin": "8.65.0", + "@typescript-eslint/parser": "8.65.0", "cz-conventional-changelog": "1.2.0", - "esbuild": "0.19.11", - "eslint": "^8.56.0", + "esbuild": "0.25.12", + "eslint": "8.57.1", + "fast-check": "4.9.0", "husky": "^4.2.5", "lint-staged": "^10.2.11", - "nx": "17.3.2", + "nx": "23.1.1", "prettier": "2.8.8", "ts-node": "^10.9.2", "tshy": "^1.11.0", "typescript": "~5.7.3", - "validate-commit-msg": "2.14.0", "vite": "6.4.3", "vitest": "^4.1.10", "webpack": "5.106.2", @@ -54,7 +54,7 @@ "husky": { "hooks": { "pre-commit": "lint-staged", - "commit-msg": "validate-commit-msg" + "commit-msg": "node scripts/release/validate-commit-message.mjs \"$HUSKY_GIT_PARAMS\"" } }, "config": { @@ -62,6 +62,38 @@ "path": "cz-conventional-changelog" } }, + "pnpm": { + "overrides": { + "@babel/core": "7.29.7", + "@babel/helpers": "7.29.7", + "@babel/plugin-transform-modules-systemjs": "7.29.8", + "@babel/runtime": "7.29.7", + "ajv@6": "6.14.0", + "ajv@8": "8.18.0", + "axios": "1.18.0", + "brace-expansion@1": "1.1.17", + "brace-expansion@2": "2.1.3", + "braces": "3.0.3", + "cross-spawn": "7.0.6", + "diff@4": "4.0.4", + "ejs": "3.1.10", + "flatted": "3.4.2", + "follow-redirects": "1.16.0", + "form-data": "4.0.6", + "glob@10": "10.5.0", + "immutable@4": "4.3.9", + "js-yaml@3": "3.15.0", + "js-yaml@4": "4.3.0", + "micromatch": "4.0.8", + "minimatch@3": "3.1.4", + "minimatch@5": "5.1.8", + "minimatch@9": "9.0.7", + "picomatch@2": "2.3.2", + "rollup": "4.59.0", + "tmp": "0.2.7", + "yaml@1": "1.10.3" + } + }, "lint-staged": { "*.js": "eslint --cache --fix", "(src|spec)/**/*.ts": [ diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 5dbb0806b5..c873c14e15 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rxjs/observable-polyfill": "9.0.0-beta.0", "@types/node": "20.11.0", - "vitest": "^1.2.1" + "vitest": "4.1.10" }, "nx": { "targets": { diff --git a/packages/observable-polyfill/package.json b/packages/observable-polyfill/package.json index c3ddb98112..2ba351b923 100644 --- a/packages/observable-polyfill/package.json +++ b/packages/observable-polyfill/package.json @@ -41,6 +41,9 @@ "Observable", "Stream" ], + "devDependencies": { + "fast-check": "4.9.0" + }, "tshy": { "selfLink": false, "dialects": [ diff --git a/packages/observable-polyfill/src/index.ts b/packages/observable-polyfill/src/index.ts index 34712c443f..44da7e6618 100644 --- a/packages/observable-polyfill/src/index.ts +++ b/packages/observable-polyfill/src/index.ts @@ -1484,6 +1484,8 @@ declare global { // eslint-disable-next-line no-var var Observable: ObservableCtor; + // This interface intentionally participates in global declaration merging. + // eslint-disable-next-line @typescript-eslint/no-empty-object-type interface Observable extends ObservableImpl {} } diff --git a/packages/observable-polyfill/src/lifecycle.fuzz.spec.ts b/packages/observable-polyfill/src/lifecycle.fuzz.spec.ts new file mode 100644 index 0000000000..ae5a342f8e --- /dev/null +++ b/packages/observable-polyfill/src/lifecycle.fuzz.spec.ts @@ -0,0 +1,77 @@ +import fc from 'fast-check'; +import { describe, expect, it } from 'vitest'; +import './index.js'; + +type Action = + | { kind: 'subscribe' } + | { kind: 'abort'; observer: number } + | { kind: 'next'; value: number } + | { kind: 'complete' } + | { kind: 'error' }; + +describe('Observable lifecycle state machine', () => { + it('preserves sharing, ref-count, restart, terminal, abort, and teardown invariants', () => { + const action = fc.oneof( + fc.constant({ kind: 'subscribe' }), + fc.nat({ max: 30 }).map((observer) => ({ kind: 'abort', observer })), + fc.integer().map((value) => ({ kind: 'next', value })), + fc.constant({ kind: 'complete' }), + fc.constant({ kind: 'error' }) + ); + fc.assert( + fc.property(fc.array(action, { minLength: 1, maxLength: 200 }), (actions) => { + let activations = 0; + let teardowns = 0; + let subscriber: Subscriber | undefined; + const controllers: AbortController[] = []; + const received: number[][] = []; + const active = new Set(); + const source = new Observable((current) => { + activations++; + subscriber = current; + current.addTeardown(() => teardowns++); + }); + + for (const current of actions) { + if (current.kind === 'subscribe') { + const index = controllers.length; + const controller = new AbortController(); + controllers.push(controller); + received.push([]); + source.subscribe( + { + next: (value) => received[index]!.push(value), + complete: () => active.delete(index), + error: () => active.delete(index), + }, + { signal: controller.signal } + ); + active.add(index); + } else if (current.kind === 'abort') { + const index = controllers.length === 0 ? -1 : current.observer % controllers.length; + controllers[index]?.abort(); + active.delete(index); + } else if (current.kind === 'next') { + const before = received.map(({ length }) => length); + subscriber?.next(current.value); + received.forEach((values, index) => { + expect(values.length - before[index]!).toBe(active.has(index) ? 1 : 0); + }); + } else if (current.kind === 'complete') { + subscriber?.complete(); + active.clear(); + } else { + if (subscriber?.active) subscriber.error(new Error('property error')); + active.clear(); + } + expect(activations - teardowns).toBe(active.size > 0 ? 1 : 0); + expect(teardowns).toBeLessThanOrEqual(activations); + } + + for (const controller of controllers) controller.abort(); + expect(activations).toBe(teardowns); + }), + { numRuns: Number(process.env.RXJS_FUZZ_RUNS ?? 200) } + ); + }); +}); diff --git a/packages/rxjs/README.md b/packages/rxjs/README.md index ab96a7184a..d014458954 100644 --- a/packages/rxjs/README.md +++ b/packages/rxjs/README.md @@ -78,6 +78,7 @@ not support legacy CommonJS resolvers. ## Documentation +- [Security assurance and release verification](docs/SECURITY_ASSURANCE.md) - [API and import guide](docs/API.md) - [Migrate from RxJS 7](MIGRATION.md) - [Unsupported RxJS 7 surfaces](docs/UNSUPPORTED_RXJS_7_SURFACES.md) diff --git a/packages/rxjs/docs/RELEASE_GATES.md b/packages/rxjs/docs/RELEASE_GATES.md index 95f5437184..135b8872dc 100644 --- a/packages/rxjs/docs/RELEASE_GATES.md +++ b/packages/rxjs/docs/RELEASE_GATES.md @@ -6,7 +6,7 @@ repository documentation application. The repository's [secure release runbook](https://github.com/ReactiveX/rxjs/blob/master/docs/RELEASE_PROCESS.md) defines version selection, exact-tarball qualification, npm staged approval, -TFA order, failure recovery, and succession. These gates qualify a candidate; +WebAuthn order and failure recovery. These gates qualify a candidate; they never authorize direct publication. ## Runtime matrix diff --git a/packages/rxjs/docs/SECURITY_ASSURANCE.md b/packages/rxjs/docs/SECURITY_ASSURANCE.md new file mode 100644 index 0000000000..c9df51f055 --- /dev/null +++ b/packages/rxjs/docs/SECURITY_ASSURANCE.md @@ -0,0 +1,52 @@ +# RxJS 9 security assurance + +RxJS 9 releases are designed to be hardened, transparent, and independently verifiable. This is evidence about the release process, not a promise that the software contains no vulnerability. + +## What users can rely on + +- The `rxjs` runtime depends only on the RxJS-owned `@rxjs/observable-polyfill`; that package has no runtime dependencies. The core runtime chain therefore contains no third-party package. +- A candidate is built twice in separate fresh Ubuntu 24.04 jobs with Node 24.12.0 and pnpm 10.34.5, frozen installs, and no restored caches. Filenames, inventories, contents, and SHA-512 values must match. +- The exact tarballs that pass package, runtime, browser, Safari, Web Platform Test, bundler, and performance gates are the files sent to npm staging. +- Every release includes `release-manifest.json`, a CycloneDX SBOM, an OSV report for the isolated release train, a GitHub attestation bundle, and the exact npm tarballs. +- npm staging uses trusted publishing bound to `ReactiveX/rxjs`, `.github/workflows/release-stage.yml`, the protected `master` branch, and the `npm-stage` environment. CI has no reusable npm publication token and cannot call direct `npm publish`. +- Staged packages require a separate npm WebAuthn approval. `rxjs` is approved last. +- The final GitHub Release is published only after npm registry integrity, npm signatures/provenance, and GitHub attestations verify. + +## One-maintainer reality + +RxJS currently has one active maintainer. The same person authors, reviews, merges, and releases changes. Pull requests remain useful because they expose diffs and run mandatory checks, but RxJS does not claim independent human approval. OpenSSF's Code-Review score is therefore accepted rather than manipulated with ceremonial approvals. + +The primary defenses are automation, deterministic evidence, narrow short-lived authority, two separate manual decisions, and phishing-resistant authentication on both GitHub and npm. Compromise of both the maintainer's GitHub and npm authentication can still compromise a release. Recovery codes are kept offline; publish-capable reusable npm tokens are prohibited. + +## Verify a release + +Download the version's assets from the [GitHub Releases page](https://github.com/ReactiveX/rxjs/releases), then run: + +```sh +# Verify GitHub's attestation for an exact downloaded tarball. +gh attestation verify ./rxjs-9.0.0-beta.0.tgz --repo ReactiveX/rxjs + +# After installing with a lockfile, verify npm registry signatures/provenance. +npm audit signatures + +# Compare npm's registry integrity with the package entry in release-manifest.json. +npm view rxjs@9.0.0-beta.0 dist.integrity +``` + +The manifest uses hexadecimal SHA-512 for files and npm-compatible base64 integrity for registry comparison. Verify the version and source commit as well as the digest; a correct hash for the wrong release is not sufficient. + +## Vulnerability evidence + +OSV scanning runs on pull requests, every `master` push, weekly, and against each isolated release train. Anything reachable from runtime, build, test, qualification, or publication must be fixed or removed. The inherited legacy documentation-application toolchain is excluded from RxJS 9 and tracked separately; its time-bounded exceptions never apply to the release-train scan. + +Property-based tests exercise release version selection, manifest and staging authorization, npm URL parsing, byte integrity, and Observable subscribe/abort/terminal/teardown/ref-count/restart sequences. Failures report a replay seed. + +## What this does not prove + +Reproducibility shows that two controlled builds produced the same bytes; it does not prove the source is bug-free or that both builders were uncompromised. Provenance identifies the GitHub workflow and source commit; it does not certify the maintainer's intent. An SBOM and clean scanner result cover known data in the selected databases, not unknown vulnerabilities. No control removes the residual risk of a fully compromised sole-maintainer account. + +## OpenSSF in context + +[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ReactiveX/rxjs/badge)](https://scorecard.dev/viewer/?uri=github.com/ReactiveX/rxjs) + +OpenSSF Scorecard is a useful repository-hygiene signal, but its aggregate is not an RxJS release gate and is not the project's primary security claim. In particular, Code-Review `0` truthfully reflects the lack of an independent reviewer. Users assessing a specific RxJS 9 version should prefer the release manifest, exact tarball hashes, provenance, SBOM, vulnerability report, and registry verification above. diff --git a/packages/rxjs/package.json b/packages/rxjs/package.json index 6114541d04..4bbd7a0183 100644 --- a/packages/rxjs/package.json +++ b/packages/rxjs/package.json @@ -4,7 +4,7 @@ "description": "Symbol-based reactive extensions for the Web Platform Observable", "license": "Apache-2.0", "bugs": { - "url": "https://github.com/reactivex/rxjs/issues" + "url": "https://github.com/ReactiveX/rxjs/issues" }, "homepage": "https://github.com/ReactiveX/rxjs/tree/master/packages/rxjs#readme", "author": "Ben Lesh ", @@ -57,14 +57,14 @@ }, "devDependencies": { "chai": "4.4.1", - "esbuild": "0.19.11" + "esbuild": "0.25.12" }, "dependencies": { "@rxjs/observable-polyfill": "9.0.0-beta.0" }, "repository": { "type": "git", - "url": "https://github.com/reactivex/rxjs.git", + "url": "https://github.com/ReactiveX/rxjs.git", "directory": "packages/rxjs" }, "keywords": [ diff --git a/packages/rxjs/src/notification.ts b/packages/rxjs/src/notification.ts index ab8e449744..b75717e765 100644 --- a/packages/rxjs/src/notification.ts +++ b/packages/rxjs/src/notification.ts @@ -38,7 +38,13 @@ export class Notification { } do(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): void { - this.kind === 'N' ? next?.(this.value as T) : this.kind === 'E' ? error?.(this.error) : complete?.(); + if (this.kind === 'N') { + next?.(this.value as T); + } else if (this.kind === 'E') { + error?.(this.error); + } else { + complete?.(); + } } accept(observer: Partial>): void; diff --git a/packages/test/src/types.ts b/packages/test/src/types.ts index dd3c7fdbda..27e99f2daf 100644 --- a/packages/test/src/types.ts +++ b/packages/test/src/types.ts @@ -86,7 +86,7 @@ export interface TestIdleOptions { export type TestNotification = MarbleNotification; /** An Observable notification and its absolute virtual timestamp. */ -export interface TestMessage extends MarbleMessage {} +export type TestMessage = MarbleMessage; /** * A producer or observer lifetime. Legacy field names are retained, but each diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbac2c2729..5ed52d486b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,36 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@babel/core': 7.29.7 + '@babel/helpers': 7.29.7 + '@babel/plugin-transform-modules-systemjs': 7.29.8 + '@babel/runtime': 7.29.7 + ajv@6: 6.14.0 + ajv@8: 8.18.0 + axios: 1.18.0 + brace-expansion@1: 1.1.17 + brace-expansion@2: 2.1.3 + braces: 3.0.3 + cross-spawn: 7.0.6 + diff@4: 4.0.4 + ejs: 3.1.10 + flatted: 3.4.2 + follow-redirects: 1.16.0 + form-data: 4.0.6 + glob@10: 10.5.0 + immutable@4: 4.3.9 + js-yaml@3: 3.15.0 + js-yaml@4: 4.3.0 + micromatch: 4.0.8 + minimatch@3: 3.1.4 + minimatch@5: 5.1.8 + minimatch@9: 9.0.7 + picomatch@2: 2.3.2 + rollup: 4.59.0 + tmp: 0.2.7 + yaml@1: 1.10.3 + patchedDependencies: husky@4.3.8: hash: bb86c80f1fd4533ee6ce5051d22685597fec4a643b2675758e492b75155fd297 @@ -14,29 +44,32 @@ importers: .: devDependencies: '@nx/eslint-plugin': - specifier: 17.3.2 - version: 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(nx@17.3.2)(typescript@5.7.3) + specifier: 23.1.1 + version: 23.1.1(@babel/traverse@7.29.8)(@typescript-eslint/parser@8.65.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(nx@23.1.1)(typescript@5.7.3) '@nx/js': - specifier: 17.3.2 - version: 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3) + specifier: 23.1.1 + version: 23.1.1(@babel/traverse@7.29.8)(nx@23.1.1) '@playwright/test': specifier: 1.62.1 version: 1.62.1 '@typescript-eslint/eslint-plugin': - specifier: ^6.19.0 - version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(typescript@5.7.3) + specifier: 8.65.0 + version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) '@typescript-eslint/parser': - specifier: ^6.19.0 - version: 6.19.0(eslint@8.56.0)(typescript@5.7.3) + specifier: 8.65.0 + version: 8.65.0(eslint@8.57.1)(typescript@5.7.3) cz-conventional-changelog: specifier: 1.2.0 version: 1.2.0 esbuild: - specifier: 0.19.11 - version: 0.19.11 + specifier: 0.25.12 + version: 0.25.12 eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: 8.57.1 + version: 8.57.1 + fast-check: + specifier: 4.9.0 + version: 4.9.0 husky: specifier: ^4.2.5 version: 4.3.8(patch_hash=bb86c80f1fd4533ee6ce5051d22685597fec4a643b2675758e492b75155fd297) @@ -44,8 +77,8 @@ importers: specifier: ^10.2.11 version: 10.5.4 nx: - specifier: 17.3.2 - version: 17.3.2 + specifier: 23.1.1 + version: 23.1.1 prettier: specifier: 2.8.8 version: 2.8.8 @@ -58,18 +91,15 @@ importers: typescript: specifier: ~5.7.3 version: 5.7.3 - validate-commit-msg: - specifier: 2.14.0 - version: 2.14.0 vite: specifier: 6.4.3 - version: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) + version: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0) vitest: specifier: ^4.1.10 - version: 4.1.10(@types/node@20.11.0)(jsdom@15.2.1)(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)) + version: 4.1.10(@types/node@20.11.0)(jsdom@15.2.1)(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0)) webpack: specifier: 5.106.2 - version: 5.106.2(esbuild@0.19.11) + version: 5.106.2(esbuild@0.25.12) yargs: specifier: 17.7.2 version: 17.7.2 @@ -210,8 +240,8 @@ importers: specifier: ^5.3.0 version: 5.3.0 cross-spawn: - specifier: ^6.0.5 - version: 6.0.5 + specifier: 7.0.6 + version: 7.0.6 css-selector-parser: specifier: ^1.3.0 version: 1.4.1 @@ -388,10 +418,14 @@ importers: specifier: 20.11.0 version: 20.11.0 vitest: - specifier: ^1.2.1 - version: 1.2.1(@types/node@20.11.0)(jsdom@15.2.1)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) + specifier: 4.1.10 + version: 4.1.10(@types/node@20.11.0)(jsdom@15.2.1)(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0)) - packages/observable-polyfill: {} + packages/observable-polyfill: + devDependencies: + fast-check: + specifier: 4.9.0 + version: 4.9.0 packages/rxjs: dependencies: @@ -403,8 +437,8 @@ importers: specifier: 4.4.1 version: 4.4.1 esbuild: - specifier: 0.19.11 - version: 0.19.11 + specifier: 0.25.12 + version: 0.25.12 packages/test: dependencies: @@ -426,10 +460,6 @@ packages: resolution: {integrity: sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA==} engines: {node: '>=6.0.0'} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.1301.4': resolution: {integrity: sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -652,16 +682,20 @@ packages: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - '@babel/core@7.16.0': - resolution: {integrity: sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==} + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} - '@babel/core@7.23.9': - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} '@babel/generator@7.16.0': @@ -672,6 +706,10 @@ packages: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.16.0': resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} engines: {node: '>=6.9.0'} @@ -688,27 +726,31 @@ packages: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.23.5': resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin@7.22.15': resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/helper-define-polyfill-provider@0.3.3': resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: - '@babel/core': ^7.4.0-0 + '@babel/core': 7.29.7 '@babel/helper-define-polyfill-provider@0.5.0': resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 '@babel/helper-environment-visitor@7.22.20': resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} @@ -718,6 +760,10 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} @@ -730,11 +776,21 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.23.3': resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': 7.29.7 '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -744,17 +800,21 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.22.20': resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/helper-replace-supers@7.22.20': resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -772,20 +832,32 @@ packages: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.22.20': resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.23.9': - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} '@babel/highlight@7.23.4': @@ -797,601 +869,606 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.13.0 + '@babel/core': 7.29.7 '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-async-generator-functions@7.16.4': resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-async-generator-functions@7.20.7': resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-class-properties@7.18.6': resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-class-static-block@7.21.0': resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-decorators@7.23.5': resolution: {integrity: sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-dynamic-import@7.18.6': resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-export-namespace-from@7.18.9': resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-json-strings@7.18.6': resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-logical-assignment-operators@7.20.7': resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-numeric-separator@7.18.6': resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-object-rest-spread@7.20.7': resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-optional-catch-binding@7.18.6': resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-optional-chaining@7.21.0': resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-private-methods@7.18.6': resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-private-property-in-object@7.21.11': resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-proposal-unicode-property-regex@7.18.6': resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-class-properties@7.12.13': resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-class-static-block@7.14.5': resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-decorators@7.23.3': resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-export-namespace-from@7.8.3': resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-import-assertions@7.23.3': resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-import-attributes@7.23.3': resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-json-strings@7.8.3': resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-jsx@7.23.3': resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-numeric-separator@7.10.4': resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-object-rest-spread@7.8.3': resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-optional-catch-binding@7.8.3': resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-optional-chaining@7.8.3': resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-private-property-in-object@7.14.5': resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-typescript@7.23.3': resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/plugin-transform-arrow-functions@7.23.3': resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-async-generator-functions@7.23.9': resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-async-to-generator@7.16.0': resolution: {integrity: sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-async-to-generator@7.23.3': resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-block-scoped-functions@7.23.3': resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-block-scoping@7.23.4': resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-class-properties@7.23.3': resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-class-static-block@7.23.4': resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': 7.29.7 '@babel/plugin-transform-classes@7.23.8': resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-computed-properties@7.23.3': resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-destructuring@7.23.3': resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-dotall-regex@7.23.3': resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-duplicate-keys@7.23.3': resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-dynamic-import@7.23.4': resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-exponentiation-operator@7.23.3': resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-export-namespace-from@7.23.4': resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-for-of@7.23.6': resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-function-name@7.23.3': resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-json-strings@7.23.4': resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-literals@7.23.3': resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-logical-assignment-operators@7.23.4': resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-member-expression-literals@7.23.3': resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-modules-amd@7.23.3': resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-modules-commonjs@7.23.3': resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 - '@babel/plugin-transform-modules-systemjs@7.23.9': - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-modules-umd@7.23.3': resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/plugin-transform-new-target@7.23.3': resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-numeric-separator@7.23.4': resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-object-rest-spread@7.23.4': resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-object-super@7.23.3': resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-optional-catch-binding@7.23.4': resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-optional-chaining@7.23.4': resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-parameters@7.23.3': resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-private-methods@7.23.3': resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-private-property-in-object@7.23.4': resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-property-literals@7.23.3': resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-regenerator@7.23.3': resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-reserved-words@7.23.3': resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-runtime@7.16.4': resolution: {integrity: sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-runtime@7.23.9': resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-shorthand-properties@7.23.3': resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-spread@7.23.3': resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-sticky-regex@7.23.3': resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-template-literals@7.23.3': resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-typeof-symbol@7.23.3': resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-typescript@7.23.5': resolution: {integrity: sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-unicode-escapes@7.23.3': resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-unicode-property-regex@7.23.3': resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-unicode-regex@7.23.3': resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/plugin-transform-unicode-sets-regex@7.23.3': resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 '@babel/preset-env@7.16.4': resolution: {integrity: sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/preset-env@7.23.9': resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/preset-modules@0.1.6': resolution: {integrity: sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==} peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 '@babel/preset-typescript@7.23.3': resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} @@ -1400,12 +1477,8 @@ packages: resolution: {integrity: sha512-ER55qzLREVA5YxeyQ3Qu48tgsF2ZrFjFjUS6V6wF0cikSw+goBJgB9PBRM1T6+Ah4iiM+sxmfS/Sy/jdzFfhiQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.16.3': - resolution: {integrity: sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.23.7': - resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} '@babel/template@7.16.0': @@ -1416,14 +1489,26 @@ packages: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.23.9': resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.23.9': resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1455,208 +1540,115 @@ packages: resolution: {integrity: sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==} engines: {node: '>=10.0.0'} + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@es-joy/jsdoccomment@0.41.0': resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.19.11': - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.11': - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.11': - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.11': - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.11': - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.11': - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.11': - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.11': - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.11': - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.11': - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.11': - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.11': - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.11': - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.11': - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.11': - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.11': - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.11': - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -1669,12 +1661,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.19.11': - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -1687,12 +1673,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.11': - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -1705,54 +1685,36 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.19.11': - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.11': - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.11': - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.11': - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1763,6 +1725,10 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1771,6 +1737,10 @@ packages: resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -1813,6 +1783,11 @@ packages: engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1821,6 +1796,10 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} deprecated: Use @eslint/object-schema instead + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1833,14 +1812,20 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@1.0.0': resolution: {integrity: sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==} engines: {node: '>=6.0.0'} @@ -1882,12 +1867,8 @@ packages: resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} engines: {node: '>=4'} - '@napi-rs/lzma-linux-x64-gnu@1.5.1': - resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} - engines: {node: ^22.20 || ^24.12 || >=25} - cpu: [x64] - os: [linux] - libc: [glibc] + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} '@ngtools/webpack@13.1.4': resolution: {integrity: sha512-s8gzjG2nYHawFhlkHMkQWYrocHkBI1nF6T9K/oCSTIsq6kvTv//Ahno2VdBSgVq8uMnpv1TymvX0nFC4Dgn1HA==} @@ -1961,15 +1942,6 @@ packages: '@nrwl/devkit@13.1.3': resolution: {integrity: sha512-TAAsZJvVc/obeH0rZKY6miVhyM2GHGb8qIWp9MAIdLlXf4VDcNC7rxwb5OrGVSwuTTjqGYBGPUx0yEogOOJthA==} - '@nrwl/devkit@17.3.2': - resolution: {integrity: sha512-31wh7dDZPM1YUCfhhk/ioHnUeoPIlKYLFLW0fGdw76Ow2nmTqrmxha2m0CSIR1/9En9GpYut2IdUdNh9CctNlA==} - - '@nrwl/eslint-plugin-nx@17.3.2': - resolution: {integrity: sha512-KfZtT+breRD7D8dy+YLIdKD7S9t4aqtEQLpRQCnJrCALYdqIRuql9rC2J69RUosozgrk55C0LERF0/kJVPe6Gg==} - - '@nrwl/js@17.3.2': - resolution: {integrity: sha512-WuIeSErulJuMeSpeK41RfiWI3jLjDD0S+tLnYdOLaWdjaIPqjknClM2BAJKlq472NnkkNWvtwtOS8jm518OjOQ==} - '@nrwl/nx-darwin-arm64@15.9.3': resolution: {integrity: sha512-2htJzVa+S/uLg5tj4nbO/tRz2SRMQIpT6EeWMgDGuEKQdpuRLVj2ez9hMpkRn9tl1tBUwR05hbV28DnOLRESVA==} engines: {node: '>= 10'} @@ -2036,101 +2008,89 @@ packages: resolution: {integrity: sha512-NcjFCbuMa53C3fBrK7qLUImUBySyr9EVwmiZuAv9sZZtm4eILK8w3qihjrB4FFUuLjPU/SViriYXi+hF2tbP4w==} hasBin: true - '@nrwl/tao@17.3.2': - resolution: {integrity: sha512-5uvpSmij0J9tteFV/0M/024K+H/o3XAlqtSdU8j03Auj1IleclSLF2yCTuIo7pYXhG3cgx1+nR+3nMs1QVAdUA==} - hasBin: true - - '@nrwl/workspace@17.3.2': - resolution: {integrity: sha512-7xE/dujPjOIxsCV6TB0C4768voQaQSxmEUAbVz0mywBGrVpjpvAIx1GvdB6wwgWqtpZTz34hKFkUSJFPweUvbg==} - - '@nx/devkit@17.3.2': - resolution: {integrity: sha512-gbOIhwrZKCSSFFbh6nE6LLCvAU7mhSdBSnRiS14YBwJJMu4CRJ0IcaFz58iXqGWZefMivKtkNFtx+zqwUC4ziw==} + '@nx/devkit@23.1.1': + resolution: {integrity: sha512-FmBfS1xUkWYvDYH/ysO7gAqGlaRzugLac8SIC+X/p76WBmhM6tJhfRW/BQ8mxOFZoVLmwhIiR8X0dRPKdasFxw==} peerDependencies: - nx: '>= 16 <= 18' + nx: '>= 22 <= 24 || ^23.0.0-0' - '@nx/eslint-plugin@17.3.2': - resolution: {integrity: sha512-szNXnMr54SH3uQjsTgSb/ySomhbqF0nJnca1yoC7XJG8+jlQLTs8EiyqjdQ9CVo+KTxsb9ilDtAZXRNCHEyGlw==} + '@nx/eslint-plugin@23.1.1': + resolution: {integrity: sha512-XJwYAwroCPCk6m60mB6MMt92DFtRzQwUgZnKoszhgvWIX5RUx4RqQqGOmTpvxAkY0f5csUm9BWwfOeQLPewSMQ==} peerDependencies: - '@typescript-eslint/parser': ^6.13.2 - eslint-config-prettier: ^9.0.0 + '@typescript-eslint/parser': ^8.0.0 + eslint-config-prettier: ^10.0.0 peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true eslint-config-prettier: optional: true - '@nx/js@17.3.2': - resolution: {integrity: sha512-37E3OILyu/7rCj6Z7tvC6PktHYa51UQBU+wWPdVWSZ64xu1SUsg9B9dfiyD1LXR9/rhjg4+0+g4cou0aqDK1Wg==} + '@nx/js@23.1.1': + resolution: {integrity: sha512-8YnhKAnSE7lTiiUEoUyO5LBmZiRIqsc/v2qFMAUfbJKr2bAKAB4h+6Lz9ZfbMvRzJH3fcDZVVWVcvU5GXmQhzg==} peerDependencies: - verdaccio: ^5.0.4 + '@swc/cli': '>=0.6.0 <0.9.0' + verdaccio: ^6.0.5 peerDependenciesMeta: + '@swc/cli': + optional: true verdaccio: optional: true - '@nx/nx-darwin-arm64@17.3.2': - resolution: {integrity: sha512-hn12o/tt26Pf4wG+8rIBgNIEZq5BFlHLv3scNrgKbd5SancHlTbY4RveRGct737UQ/78GCMCgMDRgNdagbCr6w==} - engines: {node: '>= 10'} + '@nx/nx-darwin-arm64@23.1.1': + resolution: {integrity: sha512-Rq/RXLX5uIvJQfb6kuUgEirquT5ARaAgQyNaMZVnOPAL5wuxaDvQag8WX/WUCIgbUKZuGkclJwM7Vlnvtn3bdg==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@17.3.2': - resolution: {integrity: sha512-5F28wrfE7yU60MzEXGjndy1sPJmNMIaV2W/g82kTXzxAbGHgSjwrGFmrJsrexzLp9oDlWkbc6YmInKV8gmmIaQ==} - engines: {node: '>= 10'} + '@nx/nx-darwin-x64@23.1.1': + resolution: {integrity: sha512-doWaPLPd6yUas3FhQJqMAScupCsToeTedK4RRWm700VhHoVdBTN4ejIBRBfoiT/SPAwY6EOHb8uFDJhGo7geMg==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@17.3.2': - resolution: {integrity: sha512-07MMTfsJooONqL1Vrm5L6qk/gzmSrYLazjkiTmJz+9mrAM61RdfSYfO3mSyAoyfgWuQ5yEvfI56P036mK8aoPg==} - engines: {node: '>= 10'} + '@nx/nx-freebsd-x64@23.1.1': + resolution: {integrity: sha512-9rDZKBPGuX8mid11RimJ2ENqDYZpPZhrqTlI9q/VnqcPLq0Bw/8AhqCKhBVlfNqJjbi4OsRQYDK7UkqIlcfThg==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@17.3.2': - resolution: {integrity: sha512-gQxMF6U/h18Rz+FZu50DZCtfOdk27hHghNh3d3YTeVsrJTd1SmUQbYublmwU/ia1HhFS8RVI8GvkaKt5ph0HoA==} - engines: {node: '>= 10'} + '@nx/nx-linux-arm-gnueabihf@23.1.1': + resolution: {integrity: sha512-NDR5X2HiD6WU3JEaDJmOLteIGIFqjrjkzoFWrQke2Y1oCRYu+UyFdPeaMVUyAs5OyUx4U+SD+eBQPTCNbWmazA==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@17.3.2': - resolution: {integrity: sha512-X20wiXtXmKlC01bpVEREsRls1uVOM22xDTpqILvVty6+P+ytEYFR3Vs5EjDtzBKF51wjrwf03rEoToZbmgM8MA==} - engines: {node: '>= 10'} + '@nx/nx-linux-arm64-gnu@23.1.1': + resolution: {integrity: sha512-tWDHJII8+aHweTzHelf5dGM6qGNmHbAPhCc3jrtrM0uE+UD/wt2Dpq7H3086Iyia9M9jGM9sYpuD/6W6WAFAMA==} cpu: [arm64] os: [linux] libc: [glibc] - '@nx/nx-linux-arm64-musl@17.3.2': - resolution: {integrity: sha512-yko3Xsezkn4tjeudZYLjxFl07X/YB84K+DLK7EFyh9elRWV/8VjFcQmBAKUS2r9LfaEMNXq8/vhWMOWYyWBrIA==} - engines: {node: '>= 10'} + '@nx/nx-linux-arm64-musl@23.1.1': + resolution: {integrity: sha512-t7iVMZ7Cj3LmPcfaYt9KOkojpuC5XRmtZ/0G+NBMA2GuRhCVbzpOgUCob0nQMV2TrTwn5oAWJeDc4xLni+oteg==} cpu: [arm64] os: [linux] libc: [musl] - '@nx/nx-linux-x64-gnu@17.3.2': - resolution: {integrity: sha512-RiPvvQMmlZmDu9HdT6n6sV0+fEkyAqR5VocrD5ZAzEzFIlh4dyVLripFR3+MD+QhIhXyPt/hpri1kq9sgs4wnw==} - engines: {node: '>= 10'} + '@nx/nx-linux-x64-gnu@23.1.1': + resolution: {integrity: sha512-stuCayctOt/4AFvxKYgGTPluUc0HW7DcyTz9yeTMl/zj0+FENEr8RCTjInD0Q5qVGzYphma6SssVSh432w5agw==} cpu: [x64] os: [linux] libc: [glibc] - '@nx/nx-linux-x64-musl@17.3.2': - resolution: {integrity: sha512-PWfVGmFsFJi+N1Nljg/jTKLHdufpGuHlxyfHqhDso/o4Qc0exZKSeZ1C63WkD7eTcT5kInifTQ/PffLiIDE3MA==} - engines: {node: '>= 10'} + '@nx/nx-linux-x64-musl@23.1.1': + resolution: {integrity: sha512-cZSUqGV+iHda39W91BNKSysSu6OFfR6M4ViQBcMtbwq3ce19gDr2f23MqGZEQZtaD/eSQ9UNEhx09nhrdYxWDg==} cpu: [x64] os: [linux] libc: [musl] - '@nx/nx-win32-arm64-msvc@17.3.2': - resolution: {integrity: sha512-O+4FFPbQz1mqaIj+SVE02ppe7T9ELj7Z5soQct5TbRRhwjGaw5n5xaPPBW7jUuQe2L5htid1E82LJyq3JpVc8A==} - engines: {node: '>= 10'} + '@nx/nx-win32-arm64-msvc@23.1.1': + resolution: {integrity: sha512-iDlYbFHgTYV5lg1ypEt+LAj86o/uyy6vR0ha5pcUs4FqXzQgy14lOeyRod/EZs9Er3DIyJlEi/rpEvaP99/Hag==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@17.3.2': - resolution: {integrity: sha512-4hQm+7coy+hBqGY9J709hz/tUPijhf/WS7eML2r2xBmqBew3PMHfeZuaAAYWN690nIsu0WX3wyDsNjulR8HGPQ==} - engines: {node: '>= 10'} + '@nx/nx-win32-x64-msvc@23.1.1': + resolution: {integrity: sha512-UD21AHWJ2PEA+PuANPCt+lj3kYpAzYNq+bm4VCbrt3KZd7zDPas0ns85UIhfrhsNiSmYzjWz2/JDk2S3cA6lGw==} cpu: [x64] os: [win32] - '@nx/workspace@17.3.2': - resolution: {integrity: sha512-2y952OmJx+0Rj+LQIxat8SLADjIkgB6NvjtgYZt8uRQ94jRS/JsRvGTw0V8DsY9mvsNbYoIRdJP25T3pGnI3gQ==} + '@nx/workspace@23.1.1': + resolution: {integrity: sha512-woBDOW9bNcp+I2UEKhV62zc+1/gPCKPkTHZgwCdgoXSlXC3N9soGpnLG5QFy8NLodFC1f+5TSQJqN1tBW5rfIA==} '@opentelemetry/api@1.7.0': resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} @@ -2144,10 +2104,10 @@ packages: resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} engines: {node: '>= 10.0.0'} - '@phenomnomnominal/tsquery@5.0.1': - resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + '@phenomnomnominal/tsquery@6.2.0': + resolution: {integrity: sha512-Vo9nkhfZxDB/sBiqIY3pjDC4mOSyure+AFlEW5hcy/tRE82MqCXjRN4InnVNMldinRt0dLYqg4HAU2XPq5e1LA==} peerDependencies: - typescript: ^3 || ^4 || ^5 + typescript: '>3.0.0' '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2188,211 +2148,141 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rollup/rollup-android-arm-eabi@4.62.4': - resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm-eabi@4.9.5': - resolution: {integrity: sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.62.4': - resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.9.5': - resolution: {integrity: sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.62.4': - resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.9.5': - resolution: {integrity: sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.62.4': - resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.9.5': - resolution: {integrity: sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.62.4': - resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.62.4': - resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.62.4': - resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.9.5': - resolution: {integrity: sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.62.4': - resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.62.4': - resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-gnu@4.9.5': - resolution: {integrity: sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.62.4': - resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-musl@4.9.5': - resolution: {integrity: sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.62.4': - resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.62.4': - resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.62.4': - resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.62.4': - resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.62.4': - resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.9.5': - resolution: {integrity: sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==} + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.62.4': - resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.62.4': - resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.62.4': - resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.9.5': - resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.62.4': - resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-x64-musl@4.9.5': - resolution: {integrity: sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.62.4': - resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.62.4': - resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.62.4': - resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-arm64-msvc@4.9.5': - resolution: {integrity: sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.62.4': - resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.9.5': - resolution: {integrity: sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.62.4': - resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.62.4': - resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.9.5': - resolution: {integrity: sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] @@ -2400,9 +2290,6 @@ packages: resolution: {integrity: sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sindresorhus/is@0.14.0': resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -2468,6 +2355,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/archiver@5.3.4': resolution: {integrity: sha512-Lj7fLBIMwYFgViVVZHEdExZC3lVYsl+QL0VmdNdIzGZH544jHveYWij6qdnBgJQDnR7pMKliN9z2cPZFEbhyPw==} @@ -2492,11 +2382,14 @@ packages: '@types/eslint@8.44.7': resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} + '@types/esquery@1.5.4': + resolution: {integrity: sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==} + '@types/estree@0.0.50': resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} @@ -2606,6 +2499,14 @@ packages: typescript: optional: true + '@typescript-eslint/eslint-plugin@8.65.0': + resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.65.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/experimental-utils@5.27.1': resolution: {integrity: sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2622,6 +2523,19 @@ packages: typescript: optional: true + '@typescript-eslint/parser@8.65.0': + resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.65.0': + resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@5.27.1': resolution: {integrity: sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2630,6 +2544,16 @@ packages: resolution: {integrity: sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@8.65.0': + resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.65.0': + resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/type-utils@6.19.0': resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2640,6 +2564,13 @@ packages: typescript: optional: true + '@typescript-eslint/type-utils@8.65.0': + resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/types@5.27.1': resolution: {integrity: sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2648,6 +2579,10 @@ packages: resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/types@8.65.0': + resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.27.1': resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2666,6 +2601,12 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.65.0': + resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@5.27.1': resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2678,6 +2619,13 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@8.65.0': + resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@5.27.1': resolution: {integrity: sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2686,13 +2634,14 @@ packages: resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@8.65.0': + resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} deprecated: Potential CWE-502 - Update to 1.3.1 or higher - '@vitest/expect@1.2.1': - resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==} - '@vitest/expect@4.1.10': resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} @@ -2710,27 +2659,15 @@ packages: '@vitest/pretty-format@4.1.10': resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/runner@1.2.1': - resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==} - '@vitest/runner@4.1.10': resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@1.2.1': - resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} - '@vitest/snapshot@4.1.10': resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/spy@1.2.1': - resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==} - '@vitest/spy@4.1.10': resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/utils@1.2.1': - resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==} - '@vitest/utils@4.1.10': resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} @@ -2845,14 +2782,14 @@ packages: resolution: {integrity: sha512-jVZa3njBv6tcOUw34nlUdUM/40wwtm/gnVF8rtk0tA6vNcokqYI8CFU1BZjlpFwUSZaXxYkrtuPE/f2MMFlTxQ==} engines: {node: '>=18.12.0'} - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} - '@zkochan/js-yaml@0.0.6': resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} hasBin: true + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + hasBin: true + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2927,9 +2864,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} + address@2.0.3: + resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==} + engines: {node: '>= 16.0.0'} adjust-sourcemap-loader@4.0.0: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} @@ -2962,7 +2899,7 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: - ajv: ^8.0.0 + ajv: 8.18.0 peerDependenciesMeta: ajv: optional: true @@ -2970,24 +2907,18 @@ packages: ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: - ajv: ^6.9.1 + ajv: 6.14.0 ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: - ajv: ^8.8.2 + ajv: 8.18.0 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ajv@8.8.2: - resolution: {integrity: sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==} - - ajv@8.9.0: - resolution: {integrity: sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} ambi@3.2.0: resolution: {integrity: sha512-nj5sHLPFd7u2OLmHdFs4DHt3gK6edpNw35hTRIKyI/Vd2Th5e4io50rw1lhmCdUNO2Mm4/4FkHmv6shEANAWcw==} @@ -3049,10 +2980,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -3105,18 +3032,6 @@ packages: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} engines: {node: '>=6.0'} - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -3152,10 +3067,6 @@ packages: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -3207,10 +3118,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -3264,8 +3171,8 @@ packages: resolution: {integrity: sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==} engines: {node: '>=4'} - axios@1.6.7: - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + axios@1.18.0: + resolution: {integrity: sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==} axobject-query@2.2.0: resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} @@ -3274,55 +3181,56 @@ packages: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.29.7 webpack: '>=2' babel-plugin-const-enum@1.2.0: resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} - babel-plugin-macros@2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} babel-plugin-polyfill-corejs2@0.3.3: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 babel-plugin-polyfill-corejs2@0.4.8: resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 babel-plugin-polyfill-corejs3@0.4.0: resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 babel-plugin-polyfill-corejs3@0.9.0: resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 babel-plugin-polyfill-regenerator@0.3.1: resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': 7.29.7 babel-plugin-polyfill-regenerator@0.5.5: resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': 7.29.7 babel-plugin-transform-typescript-metadata@0.3.2: resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} peerDependencies: - '@babel/core': ^7 + '@babel/core': 7.29.7 '@babel/traverse': ^7 peerDependenciesMeta: '@babel/traverse': @@ -3334,6 +3242,14 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.3: + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} + engines: {node: 20 || >=22} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -3341,10 +3257,6 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - baseline-browser-mapping@2.11.10: resolution: {integrity: sha512-35JEvJ5/KKlbCHjMCsONI2w6HE88STjVdHk+C7d8LtcFxUjZR1KeLP9izofn2qs0KUxX5r4z73bwH/rd+JHacw==} engines: {node: '>=6.0.0'} @@ -3420,18 +3332,22 @@ packages: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.17: + resolution: {integrity: sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.1.3: + resolution: {integrity: sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==} - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} + brace-expansion@5.0.8: + resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + engines: {node: 20 || >=22} + + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} browser-process-hrtime@1.0.0: @@ -3480,8 +3396,9 @@ packages: builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} @@ -3491,10 +3408,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - cacache@15.3.0: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} engines: {node: '>= 10'} @@ -3507,14 +3420,14 @@ packages: resolution: {integrity: sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==} engines: {node: ^16.14.0 || >=18.0.0} - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} @@ -3656,10 +3569,6 @@ packages: resolution: {integrity: sha512-D3CKJU9YnZNyerUQ1IzNUvMnToP3MGC2XbIAPi/7yqunJJW3rBwCVapousoFtaR9IbejeEM0KIshxC1n4HQcXw==} engines: {node: '>= 0.3.0'} - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -3736,10 +3645,6 @@ packages: collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3766,10 +3671,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - colors@0.6.2: - resolution: {integrity: sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==} - engines: {node: '>=0.1.90'} - colors@1.0.3: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} @@ -3792,10 +3693,6 @@ packages: comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - commander@2.1.0: - resolution: {integrity: sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ==} - engines: {node: '>= 0.6.x'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3824,9 +3721,6 @@ packages: compare-versions@3.6.0: resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - compress-commons@2.1.1: resolution: {integrity: sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==} engines: {node: '>= 6'} @@ -3911,10 +3805,6 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - copy-webpack-plugin@10.0.0: resolution: {integrity: sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg==} engines: {node: '>= 12.20.0'} @@ -3948,10 +3838,6 @@ packages: resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} engines: {node: '>= 0.4.0'} - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -3983,12 +3869,8 @@ packages: engines: {node: '>=4.0'} hasBin: true - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} crypt@0.0.2: @@ -4175,6 +4057,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -4212,6 +4103,14 @@ packages: resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -4230,22 +4129,14 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - degenerator@3.0.4: resolution: {integrity: sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw==} engines: {node: '>= 6'} @@ -4288,8 +4179,9 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + detect-port@2.1.0: + resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==} + engines: {node: '>= 16.0.0'} hasBin: true dgeni-packages@0.30.0: @@ -4305,12 +4197,8 @@ packages: di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + diff@4.0.4: + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} dir-glob@2.2.2: @@ -4377,22 +4265,26 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} engines: {node: '>=12'} dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} - dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} dotenv@6.2.0: resolution: {integrity: sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==} engines: {node: '>=6'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} @@ -4434,8 +4326,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true @@ -4471,6 +4363,9 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + engine.io-parser@5.2.1: resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} engines: {node: '>=10.0.0'} @@ -4529,16 +4424,32 @@ packages: es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} es-module-lexer@2.3.1: resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -4664,11 +4575,6 @@ packages: resolution: {integrity: sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==} hasBin: true - esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -4777,12 +4683,22 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@8.56.0: resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4800,6 +4716,10 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -4854,10 +4774,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - exegesis-express@2.0.1: resolution: {integrity: sha512-8ORl1YRygYGPdR+zcClMqzaU+JQuvdNIw/s0RNwYluxNecEHkDEcXFmO6A5T79p7e48KI8iXJYt6KIn4Z9z4bg==} engines: {node: '>=6.0.0', npm: '>5.0.0'} @@ -4873,10 +4789,6 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - expect-type@1.4.0: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} @@ -4891,14 +4803,6 @@ packages: ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4910,10 +4814,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - extract-opts@3.4.0: resolution: {integrity: sha512-M7Y+1cJDkzOWqvGH5F/V2qgkD6+uitW3NV9rQGl+pLSVuXZ4IDDQgxxMeLPKcWUyfypBWczIILiroSuhXG7Ytg==} engines: {node: '>=0.10'} @@ -4937,6 +4837,10 @@ packages: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} + fast-check@4.9.0: + resolution: {integrity: sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg==} + engines: {node: '>=12.17.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4961,6 +4865,9 @@ packages: fast-text-encoding@1.0.6: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + fast-uri@3.1.5: + resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==} + fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} @@ -5006,12 +4913,8 @@ packages: resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} engines: {node: '>= 0.4.0'} - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} finalhandler@1.1.2: @@ -5026,9 +4929,6 @@ packages: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} - find-parent-dir@0.3.1: - resolution: {integrity: sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -5045,11 +4945,6 @@ packages: resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==} engines: {node: '>=10'} - findup@0.1.5: - resolution: {integrity: sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==} - engines: {node: '>=0.6'} - hasBin: true - firebase-tools@9.23.3: resolution: {integrity: sha512-J1S/T96rL3vKObDtTuBkop9JtW3vYnfwyU83NopiuOy9oPBRxFkitgzk034qGrpGyZvDA6Do6ZHI50taB3hrEg==} engines: {node: '>= 10.13'} @@ -5069,14 +4964,14 @@ packages: flatmap@0.0.3: resolution: {integrity: sha512-OuR+o7kHVe+x9RtIujPay7Uw3bvDZBZFSBXClEphZuSDLmZTqMdclasf4vFSsogC8baDz0eaC2NdO/2dlXHBKQ==} - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -5087,10 +4982,6 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -5098,12 +4989,8 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} forwarded@0.2.0: @@ -5113,10 +5000,6 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5212,6 +5095,10 @@ packages: get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -5219,6 +5106,10 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -5231,10 +5122,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -5276,9 +5163,8 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true @@ -5315,6 +5201,10 @@ packages: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} + globals@17.9.0: + resolution: {integrity: sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==} + engines: {node: '>=18'} + globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -5357,6 +5247,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + got@9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} engines: {node: '>=8.6'} @@ -5413,10 +5307,18 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -5424,18 +5326,10 @@ packages: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} engines: {node: '>=0.10.0'} - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - has-values@0.1.4: resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} engines: {node: '>=0.10.0'} - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - has-yarn@2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} @@ -5444,6 +5338,10 @@ packages: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + hast-util-from-parse5@5.0.3: resolution: {integrity: sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==} @@ -5503,10 +5401,6 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} - engines: {node: ^16.14.0 || >=18.0.0} - hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -5610,10 +5504,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -5651,6 +5541,14 @@ packages: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + ignorefs@1.4.1: resolution: {integrity: sha512-1whgvOsPWFZRNA/5OFhIk56C9Y39+/CYaRVNvsZZkLymacOSqqdSU53xk8CP3G2u5gz2PX6RLxqKPcsIpDriog==} engines: {node: '>=0.12'} @@ -5675,8 +5573,8 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - immutable@4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + immutable@4.3.9: + resolution: {integrity: sha512-ObHy4YN7ycwZOUCLI1/6svfyAFu7vL8RhAvVu/bh/RZW9EPlOyDaQ9jDQWCtdqzaXUjgXZCW1migtHE7YI7UGQ==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -5772,10 +5670,6 @@ packages: resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} engines: {node: '>= 10'} - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -5832,10 +5726,6 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -5843,26 +5733,15 @@ packages: is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -5887,6 +5766,11 @@ packages: is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-installed-globally@0.3.2: resolution: {integrity: sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==} engines: {node: '>=8'} @@ -5921,10 +5805,6 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -5994,10 +5874,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -6032,10 +5908,6 @@ packages: is-whitespace-character@1.0.4: resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - is-word-character@1.0.4: resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} @@ -6047,6 +5919,10 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + is-yarn-global@0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} @@ -6109,9 +5985,8 @@ packages: resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} @@ -6158,14 +6033,6 @@ packages: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -6186,12 +6053,12 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.15.0: + resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true jsbn@0.1.1: @@ -6219,6 +6086,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} @@ -6275,6 +6147,9 @@ packages: jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -6350,10 +6225,6 @@ packages: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -6422,6 +6293,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lines-and-columns@2.0.4: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6462,10 +6337,6 @@ packages: resolution: {integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==} engines: {node: '>= 12.13.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -6640,6 +6511,9 @@ packages: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6667,10 +6541,6 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -6698,14 +6568,6 @@ packages: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - markdown-escapes@1.0.4: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} @@ -6725,6 +6587,10 @@ packages: marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} @@ -6775,12 +6641,8 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -6813,10 +6675,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -6830,21 +6688,23 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} - minimatch@3.0.5: - resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.4: + resolution: {integrity: sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + minimatch@5.1.8: + resolution: {integrity: sha512-7RN35vit8DeBclkofOVmBY0eDAZZQd1HzmukRdSyz95CRh8FT54eqnbj0krQr3mrHR6sfRyYkyhwBWjoV5uqlQ==} engines: {node: '>=10'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + minimatch@9.0.7: + resolution: {integrity: sha512-MOwgjc8tfrpn5QQEvjijjmDVtMw2oL88ugTevzxQnzRLm6l3fVEF2gzU0kYeYYKD8C66+IdGX6peJ4MyUlUnPg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -6900,6 +6760,10 @@ packages: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} @@ -6907,10 +6771,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -6925,9 +6785,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} - morgan@1.10.0: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} engines: {node: '>= 0.8.0'} @@ -6967,10 +6824,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - nash@3.0.0: resolution: {integrity: sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w==} @@ -7000,9 +6853,6 @@ packages: resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} os: ['!win32'] - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -7043,9 +6893,6 @@ packages: engines: {node: '>= 10.12.0'} hasBin: true - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -7088,10 +6935,6 @@ packages: npm-normalize-package-bin@1.0.1: resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - npm-package-arg@8.1.5: resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} engines: {node: '>=10'} @@ -7112,10 +6955,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -7156,12 +6995,12 @@ packages: '@swc/core': optional: true - nx@17.3.2: - resolution: {integrity: sha512-QjF1gnwKebQISvATrSbW7dsmIcLbA0fcyDyxLo5wVHx/MIlcaIb/lLYaPTld73ZZ6svHEZ6n2gOkhMitmkIPQA==} + nx@23.1.1: + resolution: {integrity: sha512-oDdW2JgVllgfyyN6OqlRzeABw0QrlXdxyl9rtOUMMXQzlkpYA1RTs8jinJCe6QSo7aEn0dZ+Ar7dd09hMudBsg==} hasBin: true peerDependencies: - '@swc-node/register': ^1.6.7 - '@swc/core': ^1.3.85 + '@swc-node/register': ^1.11.1 + '@swc/core': ^1.15.8 peerDependenciesMeta: '@swc-node/register': optional: true @@ -7175,10 +7014,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -7194,10 +7029,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -7213,10 +7044,6 @@ packages: object.groupby@1.0.1: resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -7262,9 +7089,9 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} open@6.4.0: resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} @@ -7301,18 +7128,10 @@ packages: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} @@ -7329,10 +7148,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -7365,6 +7180,9 @@ packages: resolution: {integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==} engines: {node: '>= 8'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-json@6.5.0: resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} @@ -7431,10 +7249,6 @@ packages: pascal-case@2.0.1: resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - path-case@2.1.1: resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} @@ -7456,18 +7270,10 @@ packages: path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -7475,6 +7281,10 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -7489,9 +7299,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -7504,16 +7311,17 @@ packages: picocolors@0.2.1: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + picomatch@4.0.5: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} @@ -7549,9 +7357,6 @@ packages: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - playwright-core@1.62.1: resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} engines: {node: '>=20'} @@ -7575,10 +7380,6 @@ packages: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - postcss-attribute-case-insensitive@5.0.2: resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} engines: {node: ^12 || ^14 || >=16} @@ -7817,10 +7618,6 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7885,6 +7682,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -7909,6 +7710,9 @@ packages: resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} engines: {node: '>=8'} + pure-rand@8.4.2: + resolution: {integrity: sha512-vvuOGgcuPJAirlHvuQw1TrOiw7ptaIXXmIbNuiNOY6lNGJJH49PQ1Kj4nd783nPdQhQdicgOjVI2yI/9BD6/Ng==} + q@1.4.1: resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -7972,9 +7776,6 @@ packages: re2@1.20.9: resolution: {integrity: sha512-ZYcPTFr5ha2xq3WQjBDTF9CWPSDK1z28MLh5UFRxc//7X8BNQ3A7yR7ITnP0jO346661ertdKVFqw1qoL3FMEQ==} - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -8027,9 +7828,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} @@ -8039,10 +7837,6 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - regex-parser@2.2.11: resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} @@ -8097,10 +7891,6 @@ packages: resolution: {integrity: sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==} engines: {node: '>= 0.8.0'} - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -8165,9 +7955,9 @@ packages: rework-visit: optional: true - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} resolve@1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} @@ -8188,10 +7978,6 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - retry-request@4.2.2: resolution: {integrity: sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==} engines: {node: '>=8.10.0'} @@ -8234,13 +8020,8 @@ packages: robots-parser@2.4.0: resolution: {integrity: sha512-oO8f2SI04dJk3pbj2KOMJ4G6QfPAgqcGmrYGmansIcpRewIPT2ljWEt5I+ip6EgiyaLo+RXkkUWw74M25HDkMA==} - rollup@4.62.4: - resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.9.5: - resolution: {integrity: sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -8252,6 +8033,10 @@ packages: resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} engines: {node: 6.* || >= 7.*} + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -8287,9 +8072,6 @@ packages: safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} @@ -8379,10 +8161,6 @@ packages: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} - semver-regex@1.0.0: - resolution: {integrity: sha512-1vZcoRC+LPtHFkLUPyrabsATDSHerxW+hJBN8h04HZOZBuewbXaNROtUVdEPrTdZsWNq6sfsXDhd48GB2xTG4g==} - engines: {node: '>=0.10.0'} - semver-regex@3.1.4: resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==} engines: {node: '>=8'} @@ -8410,6 +8188,16 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -8439,10 +8227,6 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -8456,18 +8240,10 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -8520,21 +8296,13 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + snake-case@2.1.0: resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - socket.io-adapter@2.5.2: resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} @@ -8587,10 +8355,6 @@ packages: peerDependencies: webpack: ^5.0.0 - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - source-map-resolve@0.6.0: resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated @@ -8604,10 +8368,6 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -8661,10 +8421,6 @@ packages: resolution: {integrity: sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==} engines: {node: '>=8.0'} - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -8698,10 +8454,6 @@ packages: state-toggle@1.0.3: resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8710,9 +8462,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - std-env@4.2.0: resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} @@ -8812,10 +8561,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -8824,9 +8569,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - strong-log-transformer@2.1.0: resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} engines: {node: '>=4'} @@ -9041,9 +8783,6 @@ packages: timers-ext@0.1.7: resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} - tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -9055,57 +8794,29 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@0.8.1: - resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} - engines: {node: '>=14.0.0'} - tinyrainbow@3.1.1: resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} - tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - tmp@0.0.30: - resolution: {integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==} - engines: {node: '>=0.4.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - to-readable-stream@1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -9154,19 +8865,11 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + typescript: '>=4.8.4' ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -9210,6 +8913,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -9309,9 +9015,6 @@ packages: ua-parser-js@0.7.37: resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} - ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - ultron@1.1.1: resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} @@ -9350,10 +9053,6 @@ packages: unified@9.2.2: resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -9451,10 +9150,6 @@ packages: resolution: {integrity: sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==} engines: {node: '>=0.10.0'} - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - unzipper@0.10.14: resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} @@ -9487,10 +9182,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - url-join@0.0.1: resolution: {integrity: sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==} @@ -9507,10 +9198,6 @@ packages: urlencode@1.1.0: resolution: {integrity: sha512-OOAOh9owHXr/rCN1tteSnYwIvsrGHamSz0hafMhmQa7RcS4+Ets6/2iVClVGjt9jkDW84UqoMw/Gmpc7QolX6A==} - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9545,21 +9232,12 @@ packages: valid-url@1.0.9: resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - validate-commit-msg@2.14.0: - resolution: {integrity: sha512-sETG7UmikRVseMyeayyF6L1svmNXoZiyG4TVyLYSVSYjcSuZT602T+irJKjIyE+FutGyngSLxHGLTeyFy+oyag==} - deprecated: Check out CommitLint which provides the same functionality with a more user-focused experience. - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} validate-npm-package-name@3.0.0: resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - validate.js@0.12.0: resolution: {integrity: sha512-/x2RJSvbqEyxKj0RPN4xaRquK+EggjeVXiDDEyrJzsJogjtiZ9ov7lj/svVb4DM5Q5braQF4cooAryQbUwOxlA==} @@ -9592,39 +9270,6 @@ packages: vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - vite-node@1.2.1: - resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.0.11: - resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@6.4.3: resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -9665,31 +9310,6 @@ packages: yaml: optional: true - vitest@1.2.1: - resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@4.1.10: resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -9896,16 +9516,16 @@ packages: engines: {node: '>= 8'} hasBin: true + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + which@4.0.0: resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} engines: {node: ^16.13.0 || >=18.0.0} hasBin: true - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -10056,10 +9676,15 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yamljs@0.3.0: resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==} hasBin: true @@ -10106,10 +9731,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - zip-stream@2.1.3: resolution: {integrity: sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==} engines: {node: '>= 6'} @@ -10133,11 +9754,6 @@ snapshots: '@jridgewell/resolve-uri': 1.0.0 sourcemap-codec: 1.4.8 - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - '@angular-devkit/architect@0.1301.4(chokidar@3.5.3)': dependencies: '@angular-devkit/core': 13.1.4(chokidar@3.5.3) @@ -10156,22 +9772,22 @@ snapshots: dependencies: '@ampproject/remapping': 1.0.2 '@angular-devkit/architect': 0.1301.4(chokidar@3.5.3) - '@angular-devkit/build-webpack': 0.1301.4(chokidar@3.5.3)(webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.19.11)))(webpack@5.65.0(esbuild@0.14.11)) + '@angular-devkit/build-webpack': 0.1301.4(chokidar@3.5.3)(webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.25.12)))(webpack@5.65.0(esbuild@0.14.11)) '@angular-devkit/core': 13.1.4(chokidar@3.5.3) '@angular/compiler-cli': 13.4.0(@angular/compiler@13.4.0)(typescript@5.7.3) - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/generator': 7.16.0 '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/plugin-proposal-async-generator-functions': 7.16.4(@babel/core@7.16.0) - '@babel/plugin-transform-async-to-generator': 7.16.0(@babel/core@7.16.0) - '@babel/plugin-transform-runtime': 7.16.4(@babel/core@7.16.0) - '@babel/preset-env': 7.16.4(@babel/core@7.16.0) - '@babel/runtime': 7.16.3 + '@babel/plugin-proposal-async-generator-functions': 7.16.4(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.16.0(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.16.4(@babel/core@7.29.7) + '@babel/preset-env': 7.16.4(@babel/core@7.29.7) + '@babel/runtime': 7.29.7 '@babel/template': 7.16.0 '@discoveryjs/json-ext': 0.5.6 '@ngtools/webpack': 13.1.4(@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@5.7.3))(typescript@5.7.3)(webpack@5.65.0(esbuild@0.14.11)) ansi-colors: 4.1.1 - babel-loader: 8.2.3(@babel/core@7.16.0)(webpack@5.65.0(esbuild@0.14.11)) + babel-loader: 8.2.3(@babel/core@7.29.7)(webpack@5.65.0(esbuild@0.14.11)) babel-plugin-istanbul: 6.1.1 browserslist: 4.22.3 cacache: 15.3.0 @@ -10191,7 +9807,7 @@ snapshots: license-webpack-plugin: 4.0.0(webpack@5.65.0(esbuild@0.14.11)) loader-utils: 3.2.0 mini-css-extract-plugin: 2.4.5(webpack@5.65.0(esbuild@0.14.11)) - minimatch: 3.0.4 + minimatch: 3.1.4 open: 8.4.0 ora: 5.4.1 parse5-html-rewriting-stream: 6.0.1 @@ -10217,7 +9833,7 @@ snapshots: typescript: 5.7.3 webpack: 5.65.0(esbuild@0.14.11) webpack-dev-middleware: 5.2.2(webpack@5.65.0(esbuild@0.14.11)) - webpack-dev-server: 4.6.0(webpack@5.65.0(esbuild@0.19.11)) + webpack-dev-server: 4.6.0(webpack@5.65.0(esbuild@0.25.12)) webpack-merge: 5.8.0 webpack-subresource-integrity: 5.0.0(webpack@5.65.0(esbuild@0.14.11)) optionalDependencies: @@ -10243,19 +9859,19 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1301.4(chokidar@3.5.3)(webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.19.11)))(webpack@5.65.0(esbuild@0.14.11))': + '@angular-devkit/build-webpack@0.1301.4(chokidar@3.5.3)(webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.25.12)))(webpack@5.65.0(esbuild@0.14.11))': dependencies: '@angular-devkit/architect': 0.1301.4(chokidar@3.5.3) rxjs: 6.6.7 webpack: 5.65.0(esbuild@0.14.11) - webpack-dev-server: 4.6.0(webpack@5.65.0(esbuild@0.19.11)) + webpack-dev-server: 4.6.0(webpack@5.65.0(esbuild@0.25.12)) transitivePeerDependencies: - chokidar '@angular-devkit/core@13.1.4(chokidar@3.5.3)': dependencies: - ajv: 8.8.2 - ajv-formats: 2.1.1(ajv@8.8.2) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) fast-json-stable-stringify: 2.1.0 magic-string: 0.25.7 rxjs: 6.6.7 @@ -10265,8 +9881,8 @@ snapshots: '@angular-devkit/core@13.3.11(chokidar@3.5.3)': dependencies: - ajv: 8.9.0 - ajv-formats: 2.1.1(ajv@8.9.0) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) fast-json-stable-stringify: 2.1.0 magic-string: 0.25.7 rxjs: 6.6.7 @@ -10293,6 +9909,7 @@ snapshots: - '@swc-node/register' - '@swc/core' - debug + - supports-color '@angular-eslint/bundled-angular-compiler@13.5.0': {} @@ -10381,7 +9998,7 @@ snapshots: '@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@5.7.3)': dependencies: '@angular/compiler': 13.4.0 - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 chokidar: 3.5.3 convert-source-map: 1.9.0 dependency-graph: 0.11.0 @@ -10465,7 +10082,7 @@ snapshots: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 call-me-maybe: 1.0.2 - js-yaml: 4.1.0 + js-yaml: 4.3.0 '@applitools/eyes-common-legacy@1.0.1': dependencies: @@ -10484,40 +10101,28 @@ snapshots: '@babel/highlight': 7.23.4 chalk: 2.4.2 + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.23.5': {} - '@babel/core@7.16.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.16.0) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color + '@babel/compat-data@7.29.7': {} - '@babel/core@7.23.9': + '@babel/core@7.29.7': dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -10536,9 +10141,17 @@ snapshots: dependencies: '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 2.5.2 + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.16.0': dependencies: '@babel/types': 7.23.9 @@ -10559,64 +10172,52 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.16.0)': + '@babel/helper-compilation-targets@7.29.7': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.16.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.7 + lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.9)': + '@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.29.7) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9)': + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.16.0)': + '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9)': + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -10629,6 +10230,8 @@ snapshots: '@babel/template': 7.23.9 '@babel/types': 7.23.9 + '@babel/helper-globals@7.29.7': {} + '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.23.9 @@ -10641,54 +10244,49 @@ snapshots: dependencies: '@babel/types': 7.23.9 - '@babel/helper-module-transforms@7.23.3(@babel/core@7.16.0)': + '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': + '@babel/helper-module-transforms@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.23.9 '@babel/helper-plugin-utils@7.22.5': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-plugin-utils@7.29.7': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9)': + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - '@babel/helper-replace-supers@7.22.20(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9)': + '@babel/helper-replace-supers@7.22.20(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -10707,23 +10305,26 @@ snapshots: '@babel/helper-string-parser@7.23.4': {} + '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-option@7.29.7': {} + '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.23.9 '@babel/types': 7.23.9 - '@babel/helpers@7.23.9': + '@babel/helpers@7.29.7': dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 '@babel/highlight@7.23.4': dependencies: @@ -10735,1046 +10336,776 @@ snapshots: dependencies: '@babel/types': 7.23.9 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9)': + '@babel/parser@7.29.8': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.29.8 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.16.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.29.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-async-generator-functions@7.16.4(@babel/core@7.16.0)': + '@babel/plugin-proposal-async-generator-functions@7.16.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.16.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.16.0) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.29.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.16.0)': + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.16.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.16.0) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.29.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.16.0)': + '@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.16.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) - '@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.23.9)': + '@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.29.7) '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.29.7) - '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.16.0)': + '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.16.0)': + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.16.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.16.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.16.0)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.29.7)': dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.16.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.29.7) - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.16.0)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.16.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.16.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.16.0) + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.16.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) - '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.16.0)': + '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.16.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.16.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9)': + '@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.16.0)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.16.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.16.0)': + '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.29.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-transform-async-to-generator@7.16.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.29.7) - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.29.7) - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.16.0)': + '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.16.0)': + '@babel/plugin-transform-classes@7.23.8(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.29.7) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.23.9 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.16.0)': + '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9)': + '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-async-to-generator@7.16.0(@babel/core@7.16.0)': + '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.16.0) - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.16.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-literals@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.16.0)': + '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.16.0)': + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.16.0) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9)': + '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/compat-data': 7.23.5 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.29.7) - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.29.7) - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.16.0) + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.16.0)': + '@babel/plugin-transform-runtime@7.16.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.4.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9)': + '@babel/plugin-transform-runtime@7.23.9(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-spread@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-typescript@7.23.5(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.29.7) - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.16.0)': + '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.16.0)': + '@babel/preset-env@7.16.4(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.16.0) + '@babel/compat-data': 7.23.5 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.29.7) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.29.7) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.29.7) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.29.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.29.7) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.29.7) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.29.7) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.29.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.29.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.29.7) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.29.7) + '@babel/preset-modules': 0.1.6(@babel/core@7.29.7) + '@babel/types': 7.23.9 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.4.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.29.7) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9)': + '@babel/preset-env@7.23.9(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.16.0) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.16.0) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.16.0) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.16.0) - - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.16.0) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-runtime@7.16.4(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.16.0) - babel-plugin-polyfill-corejs3: 0.4.0(@babel/core@7.16.0) - babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.16.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-typescript@7.23.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.16.0)': - dependencies: - '@babel/core': 7.16.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.16.0) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/preset-env@7.16.4(@babel/core@7.16.0)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.16.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.16.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.16.0) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.16.0) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.16.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.16.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.16.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.16.0) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.16.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.16.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.16.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.16.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.16.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.16.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.16.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.16.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.16.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.16.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.16.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.16.0) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.16.0) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.16.0) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.16.0) - '@babel/preset-modules': 0.1.6(@babel/core@7.16.0) - '@babel/types': 7.23.9 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.16.0) - babel-plugin-polyfill-corejs3: 0.4.0(@babel/core@7.16.0) - babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.16.0) - core-js-compat: 3.35.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/compat-data': 7.23.5 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.29.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.29.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.29.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.29.7) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.29.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.29.7) core-js-compat: 3.35.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6(@babel/core@7.16.0)': + '@babel/preset-modules@0.1.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.16.0) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.16.0) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.29.7) '@babel/types': 7.23.9 esutils: 2.0.3 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.9 esutils: 2.0.3 - '@babel/preset-typescript@7.23.3(@babel/core@7.23.9)': + '@babel/preset-typescript@7.23.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.29.7) '@babel/regjsgen@0.8.0': {} @@ -11783,13 +11114,7 @@ snapshots: core-js-pure: 3.33.3 regenerator-runtime: 0.14.0 - '@babel/runtime@7.16.3': - dependencies: - regenerator-runtime: 0.13.11 - - '@babel/runtime@7.23.7': - dependencies: - regenerator-runtime: 0.14.0 + '@babel/runtime@7.29.7': {} '@babel/template@7.16.0': dependencies: @@ -11803,6 +11128,12 @@ snapshots: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@babel/traverse@7.23.9': dependencies: '@babel/code-frame': 7.23.5 @@ -11813,17 +11144,34 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) globals: 11.12.0 transitivePeerDependencies: - supports-color + '@babel/traverse@7.29.8': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3(supports-color@7.2.0) + transitivePeerDependencies: + - supports-color + '@babel/types@7.23.9': dependencies: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@colors/colors@1.5.0': {} '@colors/colors@1.6.0': {} @@ -11849,159 +11197,108 @@ snapshots: '@discoveryjs/json-ext@0.5.6': {} + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 + '@es-joy/jsdoccomment@0.41.0': dependencies: comment-parser: 1.4.1 - esquery: 1.5.0 + esquery: 1.7.0 jsdoc-type-pratt-parser: 4.0.0 - '@esbuild/aix-ppc64@0.19.11': - optional: true - '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.19.11': - optional: true - '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.19.11': - optional: true - '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.19.11': - optional: true - '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.19.11': - optional: true - '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.19.11': - optional: true - '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.19.11': - optional: true - '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.19.11': - optional: true - '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.19.11': - optional: true - '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.19.11': - optional: true - '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.19.11': - optional: true - '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.19.11': - optional: true - '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.19.11': - optional: true - '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.19.11': - optional: true - '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.19.11': - optional: true - '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.19.11': - optional: true - '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.19.11': - optional: true - '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.19.11': - optional: true - '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.19.11': - optional: true - '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.19.11': - optional: true - '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.19.11': - optional: true - '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.19.11': - optional: true - '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.19.11': - optional: true - '@esbuild/win32-x64@0.25.12': optional: true + '@eslint-community/eslint-utils@4.10.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': dependencies: eslint: 8.56.0 @@ -12009,22 +11306,26 @@ snapshots: '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.12.2': {} + '@eslint/eslintrc@2.1.4': dependencies: - ajv: 6.12.6 - debug: 4.3.4 + ajv: 6.14.0 + debug: 4.4.3(supports-color@7.2.0) espree: 9.6.1 globals: 13.23.0 ignore: 5.3.0 import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.3.0 + minimatch: 3.1.4 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color '@eslint/js@8.56.0': {} + '@eslint/js@8.57.1': {} + '@gar/promisify@1.1.3': {} '@google-cloud/paginator@3.0.7': @@ -12082,8 +11383,16 @@ snapshots: '@humanwhocodes/config-array@0.11.13': dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 + debug: 4.4.3(supports-color@7.2.0) + minimatch: 3.1.4 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3(supports-color@7.2.0) + minimatch: 3.1.4 transitivePeerDependencies: - supports-color @@ -12091,6 +11400,8 @@ snapshots: '@humanwhocodes/object-schema@2.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -12105,14 +11416,17 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.15.0 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} - '@jest/schemas@29.6.3': + '@jest/diff-sequences@30.0.1': {} + + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@sinclair/typebox': 0.27.8 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.3': dependencies: @@ -12120,6 +11434,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@1.0.0': {} '@jridgewell/resolve-uri@3.1.1': {} @@ -12163,8 +11482,11 @@ snapshots: call-me-maybe: 1.0.2 glob-to-regexp: 0.3.0 - '@napi-rs/lzma-linux-x64-gnu@1.5.1': - optional: true + '@napi-rs/wasm-runtime@0.2.4': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.9.0 '@ngtools/webpack@13.1.4(@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@5.7.3))(typescript@5.7.3)(webpack@5.65.0(esbuild@0.14.11))': dependencies: @@ -12200,16 +11522,16 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.5.4 + semver: 7.8.5 '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.5.4 + semver: 7.8.5 '@npmcli/fs@3.1.0': dependencies: - semver: 7.5.4 + semver: 7.8.5 optional: true '@npmcli/git@2.1.0': @@ -12220,7 +11542,7 @@ snapshots: npm-pick-manifest: 6.1.1 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.5.4 + semver: 7.8.5 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -12263,11 +11585,12 @@ snapshots: - '@swc-node/register' - '@swc/core' - debug + - supports-color '@nrwl/devkit@13.1.3': dependencies: '@nrwl/tao': 13.1.3 - ejs: 3.1.9 + ejs: 3.1.10 ignore: 5.3.0 rxjs: 6.6.7 semver: 7.3.4 @@ -12276,45 +11599,7 @@ snapshots: - '@swc-node/register' - '@swc/core' - debug - - '@nrwl/devkit@17.3.2(nx@17.3.2)': - dependencies: - '@nx/devkit': 17.3.2(nx@17.3.2) - transitivePeerDependencies: - - nx - - '@nrwl/eslint-plugin-nx@17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(nx@17.3.2)(typescript@5.7.3)': - dependencies: - '@nx/eslint-plugin': 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(nx@17.3.2)(typescript@5.7.3) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - '@typescript-eslint/parser' - - debug - - eslint - - eslint-config-prettier - - nx - - supports-color - - typescript - - verdaccio - - '@nrwl/js@17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3)': - dependencies: - '@nx/js': 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - debug - - nx - supports-color - - typescript - - verdaccio '@nrwl/nx-darwin-arm64@15.9.3': optional: true @@ -12353,13 +11638,14 @@ snapshots: rxjs: 6.6.7 rxjs-for-await: 0.0.2(rxjs@6.6.7) semver: 7.3.4 - tmp: 0.2.1 + tmp: 0.2.7 tslib: 2.6.2 yargs-parser: 20.0.0 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug + - supports-color '@nrwl/tao@15.9.3': dependencies: @@ -12368,148 +11654,126 @@ snapshots: - '@swc-node/register' - '@swc/core' - debug + - supports-color - '@nrwl/tao@17.3.2': - dependencies: - nx: 17.3.2 - tslib: 2.6.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nrwl/workspace@17.3.2': - dependencies: - '@nx/workspace': 17.3.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nx/devkit@17.3.2(nx@17.3.2)': + '@nx/devkit@23.1.1(nx@23.1.1)': dependencies: - '@nrwl/devkit': 17.3.2(nx@17.3.2) - ejs: 3.1.9 + ejs: 3.1.10 enquirer: 2.3.6 - ignore: 5.3.0 - nx: 17.3.2 - semver: 7.5.4 - tmp: 0.2.1 + minimatch: 10.2.5 + nx: 23.1.1 + semver: 7.8.5 tslib: 2.6.2 yargs-parser: 21.1.1 - '@nx/eslint-plugin@17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(nx@17.3.2)(typescript@5.7.3)': + '@nx/eslint-plugin@23.1.1(@babel/traverse@7.29.8)(@typescript-eslint/parser@8.65.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(nx@23.1.1)(typescript@5.7.3)': dependencies: - '@nrwl/eslint-plugin-nx': 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.7.3))(eslint@8.56.0)(nx@17.3.2)(typescript@5.7.3) - '@nx/devkit': 17.3.2(nx@17.3.2) - '@nx/js': 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3) - '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.7.3) - '@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.7.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.7.3) - chalk: 4.1.2 + '@nx/devkit': 23.1.1(nx@23.1.1) + '@nx/js': 23.1.1(@babel/traverse@7.29.8)(nx@23.1.1) + '@phenomnomnominal/tsquery': 6.2.0(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.65.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@8.57.1)(typescript@5.7.3) confusing-browser-globals: 1.0.11 + globals: 17.9.0 jsonc-eslint-parser: 2.4.0 - semver: 7.5.4 + picocolors: 1.1.1 + semver: 7.8.5 tslib: 2.6.2 + optionalDependencies: + '@typescript-eslint/parser': 8.65.0(eslint@8.57.1)(typescript@5.7.3) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' + - '@swc/cli' - '@swc/core' - - '@swc/wasm' - - '@types/node' - - debug - eslint - nx - supports-color - typescript - verdaccio - '@nx/js@17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3)': - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/runtime': 7.23.7 - '@nrwl/js': 17.3.2(@babel/traverse@7.23.9)(@types/node@20.11.0)(nx@17.3.2)(typescript@5.7.3) - '@nx/devkit': 17.3.2(nx@17.3.2) - '@nx/workspace': 17.3.2 - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.7.3) - babel-plugin-const-enum: 1.2.0(@babel/core@7.23.9) - babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.9)(@babel/traverse@7.23.9) + '@nx/js@23.1.1(@babel/traverse@7.29.8)(nx@23.1.1)': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.29.7) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.29.7) + '@babel/preset-env': 7.23.9(@babel/core@7.29.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.29.7) + '@babel/runtime': 7.29.7 + '@nx/devkit': 23.1.1(nx@23.1.1) + '@nx/workspace': 23.1.1 + '@zkochan/js-yaml': 0.0.7 + babel-plugin-const-enum: 1.2.0(@babel/core@7.29.7) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.29.7)(@babel/traverse@7.29.8) chalk: 4.1.2 columnify: 1.6.0 - detect-port: 1.5.1 - fast-glob: 3.2.7 - fs-extra: 11.2.0 - ignore: 5.3.0 + detect-port: 2.1.0 + ignore: 7.0.6 js-tokens: 4.0.0 - minimatch: 9.0.3 - npm-package-arg: 11.0.1 + jsonc-parser: 3.2.0 npm-run-path: 4.0.1 - ora: 5.3.0 - semver: 7.5.4 + picocolors: 1.1.1 + picomatch: 4.0.4 + semver: 7.8.5 source-map-support: 0.5.19 - ts-node: 10.9.1(@types/node@20.11.0)(typescript@5.7.3) - tsconfig-paths: 4.2.0 + tinyglobby: 0.2.17 tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' - '@swc/core' - - '@swc/wasm' - - '@types/node' - - debug - nx - supports-color - - typescript - '@nx/nx-darwin-arm64@17.3.2': + '@nx/nx-darwin-arm64@23.1.1': optional: true - '@nx/nx-darwin-x64@17.3.2': + '@nx/nx-darwin-x64@23.1.1': optional: true - '@nx/nx-freebsd-x64@17.3.2': + '@nx/nx-freebsd-x64@23.1.1': optional: true - '@nx/nx-linux-arm-gnueabihf@17.3.2': + '@nx/nx-linux-arm-gnueabihf@23.1.1': optional: true - '@nx/nx-linux-arm64-gnu@17.3.2': + '@nx/nx-linux-arm64-gnu@23.1.1': optional: true - '@nx/nx-linux-arm64-musl@17.3.2': + '@nx/nx-linux-arm64-musl@23.1.1': optional: true - '@nx/nx-linux-x64-gnu@17.3.2': + '@nx/nx-linux-x64-gnu@23.1.1': optional: true - '@nx/nx-linux-x64-musl@17.3.2': + '@nx/nx-linux-x64-musl@23.1.1': optional: true - '@nx/nx-win32-arm64-msvc@17.3.2': + '@nx/nx-win32-arm64-msvc@23.1.1': optional: true - '@nx/nx-win32-x64-msvc@17.3.2': + '@nx/nx-win32-x64-msvc@23.1.1': optional: true - '@nx/workspace@17.3.2': + '@nx/workspace@23.1.1': dependencies: - '@nrwl/workspace': 17.3.2 - '@nx/devkit': 17.3.2(nx@17.3.2) + '@nx/devkit': 23.1.1(nx@23.1.1) + '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 17.3.2 + nx: 23.1.1 + picomatch: 4.0.4 + semver: 7.8.5 tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - - debug '@opentelemetry/api@1.7.0': {} @@ -12520,9 +11784,10 @@ snapshots: node-addon-api: 3.2.1 node-gyp-build: 4.7.1 - '@phenomnomnominal/tsquery@5.0.1(typescript@5.7.3)': + '@phenomnomnominal/tsquery@6.2.0(typescript@5.7.3)': dependencies: - esquery: 1.5.0 + '@types/esquery': 1.5.4 + esquery: 1.7.0 typescript: 5.7.3 '@pkgjs/parseargs@0.11.0': @@ -12555,118 +11820,79 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rollup/rollup-android-arm-eabi@4.62.4': - optional: true - - '@rollup/rollup-android-arm-eabi@4.9.5': - optional: true - - '@rollup/rollup-android-arm64@4.62.4': - optional: true - - '@rollup/rollup-android-arm64@4.9.5': - optional: true - - '@rollup/rollup-darwin-arm64@4.62.4': - optional: true - - '@rollup/rollup-darwin-arm64@4.9.5': - optional: true - - '@rollup/rollup-darwin-x64@4.62.4': - optional: true - - '@rollup/rollup-darwin-x64@4.9.5': - optional: true - - '@rollup/rollup-freebsd-arm64@4.62.4': - optional: true - - '@rollup/rollup-freebsd-x64@4.62.4': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.62.4': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.9.5': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.62.4': + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.62.4': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.9.5': + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.62.4': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.9.5': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.62.4': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.62.4': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.62.4': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.62.4': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.62.4': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.9.5': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.62.4': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.62.4': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.62.4': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.9.5': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.62.4': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.9.5': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-openbsd-x64@4.62.4': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.62.4': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.62.4': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.9.5': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.62.4': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.9.5': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.62.4': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.62.4': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.9.5': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true '@schematics/angular@13.3.11(chokidar@3.5.3)': @@ -12677,8 +11903,6 @@ snapshots: transitivePeerDependencies: - chokidar - '@sinclair/typebox@0.27.8': {} - '@sindresorhus/is@0.14.0': {} '@socket.io/component-emitter@3.1.0': {} @@ -12727,6 +11951,10 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + '@types/archiver@5.3.4': dependencies: '@types/readdir-glob': 1.1.5 @@ -12758,9 +11986,13 @@ snapshots: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 + '@types/esquery@1.5.4': + dependencies: + '@types/estree': 1.0.9 + '@types/estree@0.0.50': {} - '@types/estree@1.0.5': {} + '@types/estree@1.0.8': {} '@types/estree@1.0.9': {} @@ -12871,6 +12103,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.65.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/type-utils': 8.65.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.65.0 + eslint: 8.57.1 + ignore: 7.0.6 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/experimental-utils@5.27.1(eslint@8.56.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/utils': 5.27.1(eslint@8.56.0)(typescript@5.7.3) @@ -12892,6 +12140,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.65.0(eslint@8.57.1)(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3(supports-color@7.2.0) + eslint: 8.57.1 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.65.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.7.3) + '@typescript-eslint/types': 8.65.0 + debug: 4.4.3(supports-color@7.2.0) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@5.27.1': dependencies: '@typescript-eslint/types': 5.27.1 @@ -12902,11 +12171,20 @@ snapshots: '@typescript-eslint/types': 6.19.0 '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/scope-manager@8.65.0': + dependencies: + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + + '@typescript-eslint/tsconfig-utils@8.65.0(typescript@5.7.3)': + dependencies: + typescript: 5.7.3 + '@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.7.3) '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.7.3) - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.7.3) optionalDependencies: @@ -12914,18 +12192,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.65.0(eslint@8.57.1)(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@8.57.1)(typescript@5.7.3) + debug: 4.4.3(supports-color@7.2.0) + eslint: 8.57.1 + ts-api-utils: 2.5.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@5.27.1': {} '@typescript-eslint/types@6.19.0': {} + '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/typescript-estree@5.27.1(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 5.27.1 '@typescript-eslint/visitor-keys': 5.27.1 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.8.5 tsutils: 3.21.0(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 @@ -12936,10 +12228,10 @@ snapshots: dependencies: '@typescript-eslint/types': 6.19.0 '@typescript-eslint/visitor-keys': 6.19.0 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.7 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.7.3) optionalDependencies: @@ -12947,6 +12239,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.65.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/project-service': 8.65.0(typescript@5.7.3) + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.7.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3(supports-color@7.2.0) + minimatch: 10.2.6 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@5.27.1(eslint@8.56.0)(typescript@5.7.3)': dependencies: '@types/json-schema': 7.0.15 @@ -12974,6 +12281,17 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@8.65.0(eslint@8.57.1)(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + eslint: 8.57.1 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@5.27.1': dependencies: '@typescript-eslint/types': 5.27.1 @@ -12984,13 +12302,12 @@ snapshots: '@typescript-eslint/types': 6.19.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - - '@vitest/expect@1.2.1': + '@typescript-eslint/visitor-keys@8.65.0': dependencies: - '@vitest/spy': 1.2.1 - '@vitest/utils': 1.2.1 - chai: 4.4.1 + '@typescript-eslint/types': 8.65.0 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.2.0': {} '@vitest/expect@4.1.10': dependencies: @@ -13001,35 +12318,23 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0))': + '@vitest/mocker@4.1.10(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) + vite: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: tinyrainbow: 3.1.1 - '@vitest/runner@1.2.1': - dependencies: - '@vitest/utils': 1.2.1 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@4.1.10': dependencies: '@vitest/utils': 4.1.10 pathe: 2.0.3 - '@vitest/snapshot@1.2.1': - dependencies: - magic-string: 0.30.5 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@4.1.10': dependencies: '@vitest/pretty-format': 4.1.10 @@ -13037,19 +12342,8 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@1.2.1': - dependencies: - tinyspy: 2.2.0 - '@vitest/spy@4.1.10': {} - '@vitest/utils@1.2.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@4.1.10': dependencies: '@vitest/pretty-format': 4.1.10 @@ -13220,15 +12514,14 @@ snapshots: '@yarnpkg/parsers@3.0.0': dependencies: - js-yaml: 3.14.1 + js-yaml: 3.15.0 tslib: 2.6.2 - '@yarnpkg/parsers@3.0.0-rc.46': + '@zkochan/js-yaml@0.0.6': dependencies: - js-yaml: 3.14.1 - tslib: 2.6.2 + argparse: 2.0.1 - '@zkochan/js-yaml@0.0.6': + '@zkochan/js-yaml@0.0.7': dependencies: argparse: 2.0.1 @@ -13272,9 +12565,9 @@ snapshots: dependencies: acorn: 7.4.1 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.18.0): dependencies: - acorn: 8.11.3 + acorn: 8.18.0 acorn-walk@6.2.0: {} @@ -13288,7 +12581,7 @@ snapshots: acorn@8.18.0: {} - address@1.2.2: {} + address@2.0.3: {} adjust-sourcemap-loader@4.0.0: dependencies: @@ -13301,15 +12594,15 @@ snapshots: dependencies: es6-promisify: 5.0.0 - agent-base@6.0.2: + agent-base@6.0.2(supports-color@7.2.0): dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color agent-base@7.1.0: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color optional: true @@ -13323,54 +12616,32 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: - ajv: 8.12.0 - - ajv-formats@2.1.1(ajv@8.8.2): + ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: - ajv: 8.8.2 + ajv: 8.18.0 - ajv-formats@2.1.1(ajv@8.9.0): - optionalDependencies: - ajv: 8.9.0 - - ajv-keywords@3.5.2(ajv@6.12.6): + ajv-keywords@3.5.2(ajv@6.14.0): dependencies: - ajv: 6.12.6 + ajv: 6.14.0 - ajv-keywords@5.1.0(ajv@8.12.0): + ajv-keywords@5.1.0(ajv@8.18.0): dependencies: - ajv: 8.12.0 + ajv: 8.18.0 fast-deep-equal: 3.1.3 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.1.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 - - ajv@8.8.2: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ajv@8.9.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 ambi@3.2.0: dependencies: @@ -13413,8 +12684,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} ansicolors@0.3.2: {} @@ -13422,7 +12691,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 aproba@2.0.0: {} @@ -13489,15 +12758,9 @@ snapshots: aria-query@4.2.2: dependencies: - '@babel/runtime': 7.23.7 + '@babel/runtime': 7.29.7 '@babel/runtime-corejs3': 7.23.7 - arr-diff@4.0.0: {} - - arr-flatten@1.1.0: {} - - arr-union@3.1.0: {} - array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.5 @@ -13529,8 +12792,6 @@ snapshots: array-uniq@1.0.3: {} - array-unique@0.3.2: {} - array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.5 @@ -13595,8 +12856,6 @@ snapshots: assertion-error@2.0.1: {} - assign-symbols@1.0.0: {} - ast-types@0.13.4: dependencies: tslib: 2.6.2 @@ -13637,30 +12896,32 @@ snapshots: axe-core@4.1.3: {} - axios@1.6.7: + axios@1.18.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0): dependencies: - follow-redirects: 1.15.5 - form-data: 4.0.0 - proxy-from-env: 1.1.0 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0)) + form-data: 4.0.6 + https-proxy-agent: 5.0.1(supports-color@7.2.0) + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color axobject-query@2.2.0: {} - babel-loader@8.2.3(@babel/core@7.16.0)(webpack@5.65.0(esbuild@0.14.11)): + babel-loader@8.2.3(@babel/core@7.29.7)(webpack@5.65.0(esbuild@0.14.11)): dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.29.7 find-cache-dir: 3.3.2 loader-utils: 1.4.2 make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 5.65.0(esbuild@0.14.11) - babel-plugin-const-enum@1.2.0(@babel/core@7.23.9): + babel-plugin-const-enum@1.2.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.29.7) '@babel/traverse': 7.23.9 transitivePeerDependencies: - supports-color @@ -13675,85 +12936,79 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-macros@2.8.0: + babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.23.7 - cosmiconfig: 6.0.0 + '@babel/runtime': 7.29.7 + cosmiconfig: 7.1.0 resolve: 1.22.8 - babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.16.0): + babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.29.7): dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.16.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): + babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.29.7): dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.4.0(@babel/core@7.16.0): + babel-plugin-polyfill-corejs3@0.4.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.16.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.29.7) core-js-compat: 3.35.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.29.7) core-js-compat: 3.35.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.3.1(@babel/core@7.16.0): + babel-plugin-polyfill-regenerator@0.3.1(@babel/core@7.29.7): dependencies: - '@babel/core': 7.16.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.16.0) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.29.7): dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.9)(@babel/traverse@7.23.9): + babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.29.7)(@babel/traverse@7.29.8): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.22.5 optionalDependencies: - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.29.8 bail@1.0.5: {} balanced-match@1.0.2: {} + balanced-match@4.0.3: {} + + balanced-match@4.0.4: {} + base64-js@1.5.1: {} base64id@2.0.0: {} - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - baseline-browser-mapping@2.11.10: {} basic-auth-connect@1.0.0: {} @@ -13864,33 +13119,26 @@ snapshots: widest-line: 3.1.0 wrap-ansi: 7.0.0 - brace-expansion@1.1.11: + brace-expansion@1.1.17: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.1.3: dependencies: balanced-match: 1.0.2 - braces@2.3.2: + brace-expansion@5.0.8: + dependencies: + balanced-match: 4.0.3 + + brace-expansion@5.0.9: dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + balanced-match: 4.0.4 - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 browser-process-hrtime@1.0.0: {} @@ -13936,16 +13184,14 @@ snapshots: builtins@1.0.3: {} - builtins@5.0.1: + bundle-name@4.1.0: dependencies: - semver: 7.5.4 + run-applescript: 7.0.0 bytes@3.0.0: {} bytes@3.1.2: {} - cac@6.7.14: {} - cacache@15.3.0: dependencies: '@npmcli/fs': 1.1.1 @@ -13996,7 +13242,7 @@ snapshots: dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 - glob: 10.3.10 + glob: 10.5.0 lru-cache: 10.1.0 minipass: 7.0.4 minipass-collect: 2.0.1 @@ -14008,18 +13254,6 @@ snapshots: unique-filename: 3.0.0 optional: true - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - cacheable-request@6.1.0: dependencies: clone-response: 1.0.3 @@ -14030,6 +13264,11 @@ snapshots: normalize-url: 4.5.1 responselike: 1.0.2 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.5: dependencies: function-bind: 1.1.2 @@ -14157,7 +13396,7 @@ snapshots: chokidar@3.5.3: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -14197,13 +13436,6 @@ snapshots: dependencies: json-parse-helpfulerror: 1.0.3 - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - clean-stack@2.2.0: {} cli-boxes@2.2.1: {} @@ -14288,11 +13520,6 @@ snapshots: collapse-white-space@1.0.6: {} - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -14319,8 +13546,6 @@ snapshots: colorette@2.0.20: {} - colors@0.6.2: {} - colors@1.0.3: {} colors@1.4.0: {} @@ -14341,8 +13566,6 @@ snapshots: comma-separated-tokens@1.0.8: {} - commander@2.1.0: {} - commander@2.20.3: {} commander@4.1.1: {} @@ -14361,8 +13584,6 @@ snapshots: compare-versions@3.6.0: {} - component-emitter@1.3.1: {} - compress-commons@2.1.1: dependencies: buffer-crc32: 0.2.13 @@ -14379,7 +13600,7 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.52.0 + mime-db: 1.54.0 compression@1.7.4: dependencies: @@ -14467,8 +13688,6 @@ snapshots: dependencies: is-what: 3.14.1 - copy-descriptor@0.1.1: {} - copy-webpack-plugin@10.0.0(webpack@5.65.0(esbuild@0.14.11)): dependencies: fast-glob: 3.3.2 @@ -14500,21 +13719,13 @@ snapshots: corser@2.0.1: {} - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 crc-32@1.2.2: {} @@ -14545,17 +13756,9 @@ snapshots: cross-env@5.2.1: dependencies: - cross-spawn: 6.0.5 - - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 + cross-spawn: 7.0.6 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -14688,7 +13891,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.23.7 + '@babel/runtime': 7.29.7 date-format@4.0.14: {} @@ -14718,6 +13921,12 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.4.3(supports-color@7.2.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 7.2.0 + decamelize@1.2.0: {} decode-uri-component@0.2.2: {} @@ -14752,6 +13961,13 @@ snapshots: kind-of: 3.2.2 rename-keys: 1.2.0 + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -14770,25 +13986,14 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.7 - - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.3 - - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - degenerator@3.0.4: dependencies: ast-types: 0.13.4 @@ -14833,12 +14038,9 @@ snapshots: detect-node@2.1.0: {} - detect-port@1.5.1: + detect-port@2.1.0: dependencies: - address: 1.2.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + address: 2.0.3 dgeni-packages@0.30.0(chokidar@3.5.3)(dgeni@0.4.14): dependencies: @@ -14854,7 +14056,7 @@ snapshots: lodash.difference: 4.5.0 lodash.template: 4.5.0 marked: 0.7.0 - minimatch: 3.1.2 + minimatch: 3.1.4 nunjucks: 3.2.4(chokidar@3.5.3) rehype: 8.0.0 semver: 5.7.2 @@ -14878,9 +14080,7 @@ snapshots: di@0.0.1: {} - diff-sequences@29.6.3: {} - - diff@4.0.2: {} + diff@4.0.4: {} dir-glob@2.2.2: dependencies: @@ -14962,14 +14162,22 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv-expand@10.0.0: {} + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.4.7 dotenv@10.0.0: {} - dotenv@16.3.1: {} + dotenv@16.4.7: {} dotenv@6.2.0: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -15017,7 +14225,7 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.9: + ejs@3.1.10: dependencies: jake: 10.8.7 @@ -15046,6 +14254,10 @@ snapshots: dependencies: once: 1.4.0 + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + engine.io-parser@5.2.1: {} engine.io@6.5.4: @@ -15149,16 +14361,31 @@ snapshots: es-array-method-boxes-properly@1.0.0: {} + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + es-module-lexer@0.9.3: {} es-module-lexer@2.3.1: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.0 @@ -15277,32 +14504,6 @@ snapshots: esbuild-windows-arm64: 0.14.11 optional: true - esbuild@0.19.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -15385,7 +14586,7 @@ snapshots: hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.4 object.fromentries: 2.0.7 object.groupby: 1.0.1 object.values: 1.1.7 @@ -15440,6 +14641,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@5.0.1: {} + eslint@8.56.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -15450,9 +14653,9 @@ snapshots: '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 + ajv: 6.14.0 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 @@ -15471,11 +14674,54 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.3.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.4 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@7.2.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.3.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.4 natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 @@ -15491,8 +14737,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -15501,6 +14747,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -15536,7 +14786,7 @@ snapshots: execa@4.1.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 5.2.0 human-signals: 1.1.1 is-stream: 2.0.1 @@ -15548,7 +14798,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -15558,18 +14808,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - exegesis-express@2.0.1: dependencies: exegesis: 2.5.7 @@ -15579,7 +14817,7 @@ snapshots: exegesis@2.5.7: dependencies: '@apidevtools/json-schema-ref-parser': 9.1.2 - ajv: 6.12.6 + ajv: 6.14.0 body-parser: 1.20.2 content-type: 1.0.5 deep-freeze: 0.0.1 @@ -15601,18 +14839,6 @@ snapshots: exit@0.1.2: {} - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - expect-type@1.4.0: {} exponential-backoff@3.1.1: @@ -15658,15 +14884,6 @@ snapshots: dependencies: type: 2.7.2 - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - extend@3.0.2: {} extendr@3.5.0: @@ -15678,20 +14895,7 @@ snapshots: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 - tmp: 0.0.33 - - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + tmp: 0.2.7 extract-opts@3.4.0: dependencies: @@ -15711,6 +14915,10 @@ snapshots: eyes@0.1.8: {} + fast-check@4.9.0: + dependencies: + pure-rand: 8.4.2 + fast-deep-equal@3.1.3: {} fast-glob@2.2.7: @@ -15720,9 +14928,7 @@ snapshots: glob-parent: 3.1.0 is-glob: 4.0.3 merge2: 1.4.1 - micromatch: 3.1.10 - transitivePeerDependencies: - - supports-color + micromatch: 4.0.8 fast-glob@3.2.7: dependencies: @@ -15730,7 +14936,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-glob@3.3.2: dependencies: @@ -15738,7 +14944,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -15746,6 +14952,8 @@ snapshots: fast-text-encoding@1.0.6: {} + fast-uri@3.1.5: {} + fast-url-parser@1.1.3: dependencies: punycode: 1.4.1 @@ -15780,18 +14988,11 @@ snapshots: filelist@1.0.4: dependencies: - minimatch: 5.1.6 + minimatch: 5.1.8 filesize@6.4.0: {} - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -15825,8 +15026,6 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 - find-parent-dir@0.3.1: {} - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -15845,18 +15044,13 @@ snapshots: dependencies: semver-regex: 3.1.4 - findup@0.1.5: - dependencies: - colors: 0.6.2 - commander: 2.1.0 - firebase-tools@9.23.3(encoding@0.1.13): dependencies: '@google-cloud/pubsub': 2.19.4(encoding@0.1.13) '@types/archiver': 5.3.4 JSONStream: 1.3.5 abort-controller: 3.0.0 - ajv: 6.12.6 + ajv: 6.14.0 archiver: 5.3.2 body-parser: 1.20.2 chokidar: 3.5.3 @@ -15867,7 +15061,7 @@ snapshots: configstore: 5.0.1 cors: 2.8.5 cross-env: 5.2.1 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 csv-streamify: 3.0.4 dotenv: 6.2.0 exegesis: 2.5.7 @@ -15879,14 +15073,14 @@ snapshots: glob: 7.2.3 google-auth-library: 6.1.6(encoding@0.1.13) inquirer: 6.3.1 - js-yaml: 3.14.1 + js-yaml: 3.15.0 jsonwebtoken: 8.5.1 leven: 3.1.0 lodash: 4.17.21 marked: 0.7.0 marked-terminal: 3.3.0(marked@0.7.0) mime: 2.6.0 - minimatch: 3.1.2 + minimatch: 3.1.4 morgan: 1.10.0 node-fetch: 2.7.0(encoding@0.1.13) open: 6.4.0 @@ -15900,7 +15094,7 @@ snapshots: superstatic: 7.1.0 tar: 4.4.19 tcp-port-used: 1.0.2 - tmp: 0.0.33 + tmp: 0.2.7 triple-beam: 1.4.1 tweetsodium: 0.0.5 universal-analytics: 0.4.23 @@ -15925,7 +15119,7 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.2.9 + flatted: 3.4.2 keyv: 4.5.4 rimraf: 3.0.2 @@ -15933,45 +15127,37 @@ snapshots: flatmap@0.0.3: {} - flatted@3.2.9: {} + flatted@3.4.2: {} fn.name@1.1.0: {} - follow-redirects@1.15.5: {} + follow-redirects@1.16.0(debug@4.4.3(supports-color@7.2.0)): + optionalDependencies: + debug: 4.4.3(supports-color@7.2.0) for-each@0.3.3: dependencies: is-callable: 1.2.7 - for-in@1.0.2: {} - foreground-child@3.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 forever-agent@0.6.1: {} - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.0: + form-data@4.0.6: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 mime-types: 2.1.35 forwarded@0.2.0: {} fraction.js@4.3.7: {} - fragment-cache@0.2.1: - dependencies: - map-cache: 0.2.2 - fresh@0.5.2: {} fs-constants@1.0.0: {} @@ -16062,7 +15248,7 @@ snapshots: dependencies: abort-controller: 3.0.0 extend: 3.0.2 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@7.2.0) is-stream: 2.0.1 node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: @@ -16090,10 +15276,28 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.0 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + get-own-enumerable-property-symbols@3.0.2: {} get-package-type@0.1.0: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@4.1.0: dependencies: pump: 3.0.0 @@ -16104,8 +15308,6 @@ snapshots: get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-symbol-description@1.0.0: dependencies: call-bind: 1.0.5 @@ -16115,7 +15317,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -16155,20 +15357,21 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.3.10: + glob@10.5.0: dependencies: foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + jackspeak: 3.4.3 + minimatch: 9.0.7 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 glob@7.1.4: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -16177,7 +15380,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -16186,7 +15389,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -16195,7 +15398,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.6 + minimatch: 5.1.8 once: 1.4.0 global-dirs@2.1.0: @@ -16212,6 +15415,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@17.9.0: {} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 @@ -16253,8 +15458,6 @@ snapshots: ignore: 4.0.6 pify: 4.0.1 slash: 2.0.0 - transitivePeerDependencies: - - supports-color google-auth-library@6.1.6(encoding@0.1.13): dependencies: @@ -16313,6 +15516,8 @@ snapshots: dependencies: get-intrinsic: 1.2.2 + gopd@1.2.0: {} + got@9.6.0: dependencies: '@sindresorhus/is': 0.14.0 @@ -16348,7 +15553,7 @@ snapshots: har-validator@5.1.5: dependencies: - ajv: 6.12.6 + ajv: 6.14.0 har-schema: 2.0.0 has-ansi@2.0.0: @@ -16371,10 +15576,16 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + has-unicode@2.0.1: {} has-value@0.3.1: @@ -16383,25 +15594,18 @@ snapshots: has-values: 0.1.4 isobject: 2.1.0 - has-value@1.0.0: - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - has-values@0.1.4: {} - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - has-yarn@2.1.0: {} hasown@2.0.0: dependencies: function-bind: 1.1.2 + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + hast-util-from-parse5@5.0.3: dependencies: ccount: 1.1.0 @@ -16497,10 +15701,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - hosted-git-info@7.0.1: - dependencies: - lru-cache: 10.1.0 - hpack.js@2.1.6: dependencies: inherits: 2.0.4 @@ -16559,23 +15759,23 @@ snapshots: http-proxy-agent@4.0.1: dependencies: '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color optional: true @@ -16586,14 +15786,14 @@ snapshots: http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.8 transitivePeerDependencies: - debug http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.5 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0)) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -16629,22 +15829,22 @@ snapshots: https-proxy-agent@5.0.0: dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1(supports-color@7.2.0): dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color optional: true @@ -16653,8 +15853,6 @@ snapshots: human-signals@2.1.0: {} - human-signals@5.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -16688,12 +15886,16 @@ snapshots: ignore-walk@4.0.1: dependencies: - minimatch: 3.1.2 + minimatch: 3.1.4 ignore@4.0.6: {} ignore@5.3.0: {} + ignore@7.0.5: {} + + ignore@7.0.6: {} + ignorefs@1.4.1: dependencies: editions: 2.3.1 @@ -16712,7 +15914,7 @@ snapshots: immediate@3.0.6: {} - immutable@4.3.4: {} + immutable@4.3.9: {} import-fresh@3.3.0: dependencies: @@ -16808,10 +16010,6 @@ snapshots: ipaddr.js@2.1.0: {} - is-accessor-descriptor@1.0.1: - dependencies: - hasown: 2.0.0 - is-alphabetical@1.0.4: {} is-alphanumeric@1.0.0: {} @@ -16867,33 +16065,15 @@ snapshots: dependencies: hasown: 2.0.0 - is-data-descriptor@1.0.1: - dependencies: - hasown: 2.0.0 - is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 is-decimal@1.0.4: {} - is-descriptor@0.1.7: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-descriptor@1.0.3: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - is-docker@2.2.1: {} - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 + is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -16911,6 +16091,10 @@ snapshots: is-hexadecimal@1.0.4: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-installed-globally@0.3.2: dependencies: global-dirs: 2.1.0 @@ -16939,10 +16123,6 @@ snapshots: dependencies: has-tostringtag: 1.0.0 - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 - is-number@7.0.0: {} is-obj@1.0.1: {} @@ -16990,8 +16170,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 @@ -17022,8 +16200,6 @@ snapshots: is-whitespace-character@1.0.4: {} - is-windows@1.0.2: {} - is-word-character@1.0.4: {} is-wsl@1.1.0: {} @@ -17032,6 +16208,10 @@ snapshots: dependencies: is-docker: 2.2.1 + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + is-yarn-global@0.3.0: {} is2@2.0.9: @@ -17067,7 +16247,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.29.7 '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -17083,7 +16263,7 @@ snapshots: istanbul-lib-source-maps@3.0.6: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -17096,7 +16276,7 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@2.3.6: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -17107,7 +16287,7 @@ snapshots: async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 - minimatch: 3.1.2 + minimatch: 3.1.4 jasmine-core@2.8.0: {} @@ -17146,15 +16326,6 @@ snapshots: jasminewd2@2.2.0: {} - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-get-type@29.6.3: {} - jest-worker@27.5.1: dependencies: '@types/node': 20.11.0 @@ -17175,12 +16346,12 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.15.0: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.3.0: dependencies: argparse: 2.0.1 @@ -17224,6 +16395,8 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.1.0: {} + json-bigint@1.0.0: dependencies: bignumber.js: 9.1.2 @@ -17262,15 +16435,17 @@ snapshots: jsonc-eslint-parser@2.4.0: dependencies: - acorn: 8.11.3 + acorn: 8.18.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.5.4 + semver: 7.8.5 jsonc-parser@3.0.0: {} jsonc-parser@3.2.0: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -17346,7 +16521,7 @@ snapshots: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 3.0.6 istanbul-reports: 3.1.6 - minimatch: 3.1.2 + minimatch: 3.1.4 transitivePeerDependencies: - supports-color @@ -17369,7 +16544,7 @@ snapshots: dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.2 - braces: 3.0.2 + braces: 3.0.3 chokidar: 3.5.3 connect: 3.7.0 di: 0.0.1 @@ -17381,14 +16556,14 @@ snapshots: lodash: 4.17.21 log4js: 6.9.1 mime: 2.6.0 - minimatch: 3.1.2 + minimatch: 3.1.4 mkdirp: 0.5.6 qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 socket.io: 4.7.2 source-map: 0.6.1 - tmp: 0.2.1 + tmp: 0.2.7 ua-parser-js: 0.7.37 yargs: 16.2.0 transitivePeerDependencies: @@ -17409,10 +16584,6 @@ snapshots: dependencies: is-buffer: 1.1.6 - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - kind-of@6.0.3: {} klona@2.0.6: {} @@ -17521,6 +16692,8 @@ snapshots: lines-and-columns@1.2.4: {} + lines-and-columns@2.0.3: {} + lines-and-columns@2.0.4: {} lint-staged@10.5.4: @@ -17535,7 +16708,7 @@ snapshots: execa: 4.1.0 listr2: 3.14.0(enquirer@2.4.1) log-symbols: 4.1.0 - micromatch: 4.0.5 + micromatch: 4.0.8 normalize-path: 3.0.0 please-upgrade-node: 3.2.0 string-argv: 0.3.1 @@ -17576,11 +16749,6 @@ snapshots: loader-utils@3.2.0: {} - local-pkg@0.5.0: - dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 - locate-path@3.0.0: dependencies: p-locate: 3.0.0 @@ -17696,8 +16864,8 @@ snapshots: log4js@6.9.1: dependencies: date-format: 4.0.14 - debug: 4.3.4 - flatted: 3.2.9 + debug: 4.4.3(supports-color@7.2.0) + flatted: 3.4.2 rfdc: 1.3.0 streamroller: 3.1.5 transitivePeerDependencies: @@ -17738,6 +16906,8 @@ snapshots: lru-cache@10.1.0: {} + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -17766,10 +16936,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.5: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -17781,7 +16947,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.5.4 + semver: 7.8.5 make-error@1.3.6: {} @@ -17791,7 +16957,7 @@ snapshots: cacache: 16.1.3 http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@7.2.0) is-lambda: 1.0.1 lru-cache: 7.18.3 minipass: 3.3.6 @@ -17830,7 +16996,7 @@ snapshots: cacache: 15.3.0 http-cache-semantics: 4.1.1 http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@7.2.0) is-lambda: 1.0.1 lru-cache: 6.0.0 minipass: 3.3.6 @@ -17846,12 +17012,6 @@ snapshots: - bluebird - supports-color - map-cache@0.2.2: {} - - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - markdown-escapes@1.0.4: {} markdown-table@2.0.0: @@ -17872,6 +17032,8 @@ snapshots: marky@1.2.5: {} + math-intrinsics@1.1.0: {} + md5@2.3.0: dependencies: charenc: 0.0.2 @@ -17930,28 +17092,10 @@ snapshots: methods@1.1.2: {} - micromatch@3.1.10: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: + micromatch@4.0.8: dependencies: - braces: 3.0.2 - picomatch: 2.3.1 + braces: 3.0.3 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -17969,8 +17113,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-response@1.0.1: {} mini-css-extract-plugin@2.4.5(webpack@5.65.0(esbuild@0.14.11)): @@ -17980,25 +17122,25 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@3.0.4: + minimatch@10.2.5: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 5.0.8 - minimatch@3.0.5: + minimatch@10.2.6: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 5.0.9 - minimatch@3.1.2: + minimatch@3.1.4: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.17 - minimatch@5.1.6: + minimatch@5.1.8: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.1.3 - minimatch@9.0.3: + minimatch@9.0.7: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 5.0.9 minimist@1.2.8: {} @@ -18066,6 +17208,8 @@ snapshots: minipass@7.0.4: {} + minipass@7.1.3: {} + minizlib@1.3.3: dependencies: minipass: 2.9.0 @@ -18075,11 +17219,6 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -18088,13 +17227,6 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.5.0: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.3.2 - morgan@1.10.0: dependencies: basic-auth: 2.0.1 @@ -18129,22 +17261,6 @@ snapshots: nanoid@3.3.7: {} - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - nash@3.0.0: dependencies: async: 1.5.2 @@ -18177,8 +17293,6 @@ snapshots: node-gyp-build: 4.7.1 optional: true - nice-try@1.0.5: {} - no-case@2.3.2: dependencies: lower-case: 1.1.4 @@ -18205,12 +17319,12 @@ snapshots: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 - glob: 10.3.10 + glob: 10.5.0 graceful-fs: 4.2.11 make-fetch-happen: 13.0.0 nopt: 7.2.0 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.8.5 tar: 6.2.0 which: 4.0.0 transitivePeerDependencies: @@ -18226,15 +17340,13 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.8.5 tar: 6.2.0 which: 2.0.2 transitivePeerDependencies: - bluebird - supports-color - node-machine-id@1.1.12: {} - node-releases@2.0.14: {} node-releases@2.0.51: {} @@ -18267,17 +17379,10 @@ snapshots: npm-install-checks@4.0.0: dependencies: - semver: 7.5.4 + semver: 7.8.5 npm-normalize-package-bin@1.0.1: {} - npm-package-arg@11.0.1: - dependencies: - hosted-git-info: 7.0.1 - proc-log: 3.0.0 - semver: 7.5.4 - validate-npm-package-name: 5.0.0 - npm-package-arg@8.1.5: dependencies: hosted-git-info: 4.1.0 @@ -18314,10 +17419,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.2.0: - dependencies: - path-key: 4.0.0 - npmlog@6.0.2: dependencies: are-we-there-yet: 3.0.1 @@ -18350,6 +17451,7 @@ snapshots: - '@swc-node/register' - '@swc/core' - debug + - supports-color nx@15.9.3: dependencies: @@ -18359,7 +17461,7 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.7 + axios: 1.18.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0) chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -18372,17 +17474,17 @@ snapshots: fs-extra: 11.2.0 glob: 7.1.4 ignore: 5.3.0 - js-yaml: 4.1.0 + js-yaml: 4.3.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.4 - minimatch: 3.0.5 + minimatch: 3.1.4 npm-run-path: 4.0.1 open: 8.4.2 semver: 7.3.4 string-width: 4.2.3 strong-log-transformer: 2.1.0 tar-stream: 2.2.0 - tmp: 0.2.1 + tmp: 0.2.7 tsconfig-paths: 4.2.0 tslib: 2.6.2 v8-compile-cache: 2.3.0 @@ -18400,67 +17502,146 @@ snapshots: '@nrwl/nx-win32-x64-msvc': 15.9.3 transitivePeerDependencies: - debug + - supports-color - nx@17.3.2: + nx@23.1.1: dependencies: - '@nrwl/tao': 17.3.2 + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@emnapi/wasi-threads': 1.0.4 + '@jest/diff-sequences': 30.0.1 + '@napi-rs/wasm-runtime': 0.2.4 + '@tybys/wasm-util': 0.9.0 '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0-rc.46 - '@zkochan/js-yaml': 0.0.6 - axios: 1.6.7 + '@zkochan/js-yaml': 0.0.7 + agent-base: 6.0.2(supports-color@7.2.0) + ansi-colors: 4.1.3 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + argparse: 2.0.1 + asynckit: 0.4.0 + axios: 1.18.0(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0) + balanced-match: 4.0.3 + base64-js: 1.5.1 + bl: 4.1.0 + brace-expansion: 5.0.8 + buffer: 5.7.1 + bundle-name: 4.1.0 + call-bind-apply-helpers: 1.0.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 - dotenv: 16.3.1 - dotenv-expand: 10.0.0 + clone: 1.0.4 + color-convert: 2.0.1 + color-name: 1.1.4 + combined-stream: 1.0.8 + debug: 4.4.3(supports-color@7.2.0) + default-browser: 5.2.1 + default-browser-id: 5.0.0 + defaults: 1.0.4 + define-lazy-prop: 3.0.0 + delayed-stream: 1.0.0 + dotenv: 16.4.7 + dotenv-expand: 12.0.3 + dunder-proto: 1.0.1 + ejs: 3.1.10 + emoji-regex: 8.0.0 + end-of-stream: 1.4.5 enquirer: 2.3.6 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + escalade: 3.2.0 + escape-string-regexp: 1.0.5 figures: 3.2.0 flat: 5.0.2 - fs-extra: 11.2.0 - ignore: 5.3.0 - jest-diff: 29.7.0 - js-yaml: 4.1.0 - jsonc-parser: 3.2.0 - lines-and-columns: 2.0.4 - minimatch: 9.0.3 - node-machine-id: 1.1.12 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0)) + form-data: 4.0.6 + fs-constants: 1.0.0 + function-bind: 1.1.2 + get-caller-file: 2.0.5 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + has-flag: 4.0.0 + has-symbols: 1.1.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + https-proxy-agent: 5.0.1(supports-color@7.2.0) + ieee754: 1.2.1 + ignore: 7.0.5 + inherits: 2.0.4 + is-docker: 3.0.0 + is-fullwidth-code-point: 3.0.0 + is-inside-container: 1.0.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + is-wsl: 3.1.0 + isexe: 2.0.0 + json5: 2.2.3 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.3 + log-symbols: 4.1.0 + math-intrinsics: 1.1.0 + mime-db: 1.52.0 + mime-types: 2.1.35 + mimic-fn: 2.1.0 + minimatch: 10.2.5 + minimist: 1.2.8 + ms: 2.1.3 npm-run-path: 4.0.1 - open: 8.4.2 - ora: 5.3.0 - semver: 7.5.4 + once: 1.4.0 + onetime: 5.1.2 + open: 10.1.0 + ora: 5.4.1 + path-key: 3.1.1 + picocolors: 1.1.1 + proxy-from-env: 2.1.0 + readable-stream: 3.6.2 + require-directory: 2.1.1 + resolve.exports: 2.0.3 + restore-cursor: 3.1.0 + run-applescript: 7.0.0 + safe-buffer: 5.2.1 + semver: 7.8.4 + signal-exit: 3.0.7 + smol-toml: 1.6.1 string-width: 4.2.3 - strong-log-transformer: 2.1.0 + string_decoder: 1.3.0 + strip-ansi: 6.0.1 + strip-bom: 3.0.0 + supports-color: 7.2.0 tar-stream: 2.2.0 - tmp: 0.2.1 + tmp: 0.2.7 tsconfig-paths: 4.2.0 - tslib: 2.6.2 + tslib: 2.8.1 + util-deprecate: 1.0.2 + wcwidth: 1.0.1 + which: 3.0.1 + wrap-ansi: 7.0.0 + wrappy: 1.0.2 + y18n: 5.0.8 + yaml: 2.9.0 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 17.3.2 - '@nx/nx-darwin-x64': 17.3.2 - '@nx/nx-freebsd-x64': 17.3.2 - '@nx/nx-linux-arm-gnueabihf': 17.3.2 - '@nx/nx-linux-arm64-gnu': 17.3.2 - '@nx/nx-linux-arm64-musl': 17.3.2 - '@nx/nx-linux-x64-gnu': 17.3.2 - '@nx/nx-linux-x64-musl': 17.3.2 - '@nx/nx-win32-arm64-msvc': 17.3.2 - '@nx/nx-win32-x64-msvc': 17.3.2 - transitivePeerDependencies: - - debug + '@nx/nx-darwin-arm64': 23.1.1 + '@nx/nx-darwin-x64': 23.1.1 + '@nx/nx-freebsd-x64': 23.1.1 + '@nx/nx-linux-arm-gnueabihf': 23.1.1 + '@nx/nx-linux-arm64-gnu': 23.1.1 + '@nx/nx-linux-arm64-musl': 23.1.1 + '@nx/nx-linux-x64-gnu': 23.1.1 + '@nx/nx-linux-x64-musl': 23.1.1 + '@nx/nx-win32-arm64-msvc': 23.1.1 + '@nx/nx-win32-x64-msvc': 23.1.1 oauth-sign@0.9.0: {} object-assign@4.1.1: {} - object-copy@0.1.0: - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - object-hash@3.0.0: {} object-inspect@1.13.1: {} @@ -18472,10 +17653,6 @@ snapshots: object-keys@1.1.1: {} - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - object.assign@4.1.4: dependencies: call-bind: 1.0.5 @@ -18504,10 +17681,6 @@ snapshots: es-abstract: 1.22.3 get-intrinsic: 1.2.2 - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - object.values@1.1.7: dependencies: call-bind: 1.0.5 @@ -18551,9 +17724,12 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: + open@10.1.0: dependencies: - mimic-fn: 4.0.0 + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 open@6.4.0: dependencies: @@ -18573,7 +17749,7 @@ snapshots: openapi3-ts@2.0.2: dependencies: - yaml: 1.10.2 + yaml: 1.10.3 opencollective-postinstall@2.0.3: {} @@ -18606,17 +17782,6 @@ snapshots: strip-ansi: 5.2.0 wcwidth: 1.0.1 - ora@5.3.0: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@5.4.1: dependencies: bl: 4.1.0 @@ -18629,8 +17794,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} - p-cancelable@1.1.0: {} p-defer@3.0.0: {} @@ -18643,10 +17806,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -18673,11 +17832,11 @@ snapshots: pac-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) get-uri: 3.0.2 http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@7.2.0) pac-resolver: 5.0.1 raw-body: 2.5.2 socks-proxy-agent: 5.0.1 @@ -18690,6 +17849,8 @@ snapshots: ip: 1.1.8 netmask: 2.0.2 + package-json-from-dist@1.0.1: {} + package-json@6.5.0: dependencies: got: 9.6.0 @@ -18787,8 +17948,6 @@ snapshots: camel-case: 3.0.0 upper-case-first: 1.1.2 - pascalcase@0.1.1: {} - path-case@2.1.1: dependencies: no-case: 2.3.2 @@ -18803,12 +17962,8 @@ snapshots: path-is-inside@1.0.2: {} - path-key@2.0.1: {} - path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@1.10.1: @@ -18816,6 +17971,11 @@ snapshots: lru-cache: 10.1.0 minipass: 7.0.4 + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + path-to-regexp@0.1.7: {} path-to-regexp@1.8.0: @@ -18828,8 +17988,6 @@ snapshots: path-type@4.0.0: {} - pathe@1.1.2: {} - pathe@2.0.3: {} pathval@1.1.1: {} @@ -18838,11 +17996,11 @@ snapshots: picocolors@0.2.1: {} - picocolors@1.0.0: {} - picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} + + picomatch@4.0.4: {} picomatch@4.0.5: {} @@ -18874,12 +18032,6 @@ snapshots: dependencies: find-up: 5.0.0 - pkg-types@1.0.3: - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.5.0 - pathe: 1.1.2 - playwright-core@1.62.1: {} playwright@1.62.1: @@ -18904,8 +18056,6 @@ snapshots: transitivePeerDependencies: - supports-color - posix-character-classes@0.1.1: {} - postcss-attribute-case-insensitive@5.0.2(postcss@8.4.4): dependencies: postcss: 8.4.4 @@ -19145,13 +18295,8 @@ snapshots: pretty-bytes@5.6.0: {} - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - - proc-log@3.0.0: {} + proc-log@3.0.0: + optional: true process-nextick-args@1.0.7: {} @@ -19250,10 +18395,10 @@ snapshots: proxy-agent@5.0.0: dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@7.2.0) lru-cache: 5.1.1 pac-proxy-agent: 5.0.0 proxy-from-env: 1.1.0 @@ -19263,6 +18408,8 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + prr@1.0.1: optional: true @@ -19283,6 +18430,8 @@ snapshots: dependencies: escape-goat: 2.1.1 + pure-rand@8.4.2: {} + q@1.4.1: {} q@1.5.1: {} @@ -19345,8 +18494,6 @@ snapshots: - supports-color optional: true - react-is@18.2.0: {} - read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -19400,11 +18547,11 @@ snapshots: readdir-glob@1.1.3: dependencies: - minimatch: 5.1.6 + minimatch: 5.1.8 readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 rechoir@0.6.2: dependencies: @@ -19422,20 +18569,13 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.13.11: {} - regenerator-runtime@0.13.9: {} regenerator-runtime@0.14.0: {} regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.23.7 - - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 + '@babel/runtime': 7.29.7 regex-parser@2.2.11: {} @@ -19546,8 +18686,6 @@ snapshots: rename-keys@1.2.0: {} - repeat-element@1.1.4: {} - repeat-string@1.6.1: {} replace-ext@1.0.0: {} @@ -19572,7 +18710,7 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 2.3.3 + form-data: 4.0.6 har-validator: 5.1.5 http-signature: 1.2.0 is-typedarray: 1.0.0 @@ -19601,7 +18739,7 @@ snapshots: resolve-import@1.4.5: dependencies: - glob: 10.3.10 + glob: 10.5.0 walk-up-path: 3.0.1 resolve-url-loader@4.0.0: @@ -19612,7 +18750,7 @@ snapshots: postcss: 7.0.39 source-map: 0.6.1 - resolve-url@0.2.1: {} + resolve.exports@2.0.3: {} resolve@1.22.0: dependencies: @@ -19640,11 +18778,9 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - ret@0.1.15: {} - retry-request@4.2.2: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) extend: 3.0.2 transitivePeerDependencies: - supports-color @@ -19669,59 +18805,39 @@ snapshots: rimraf@5.0.5: dependencies: - glob: 10.3.10 + glob: 10.5.0 robots-parser@2.4.0: {} - rollup@4.62.4: - dependencies: - '@types/estree': 1.0.9 - optionalDependencies: - '@napi-rs/lzma-linux-x64-gnu': 1.5.1 - '@rollup/rollup-android-arm-eabi': 4.62.4 - '@rollup/rollup-android-arm64': 4.62.4 - '@rollup/rollup-darwin-arm64': 4.62.4 - '@rollup/rollup-darwin-x64': 4.62.4 - '@rollup/rollup-freebsd-arm64': 4.62.4 - '@rollup/rollup-freebsd-x64': 4.62.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 - '@rollup/rollup-linux-arm-musleabihf': 4.62.4 - '@rollup/rollup-linux-arm64-gnu': 4.62.4 - '@rollup/rollup-linux-arm64-musl': 4.62.4 - '@rollup/rollup-linux-loong64-gnu': 4.62.4 - '@rollup/rollup-linux-loong64-musl': 4.62.4 - '@rollup/rollup-linux-ppc64-gnu': 4.62.4 - '@rollup/rollup-linux-ppc64-musl': 4.62.4 - '@rollup/rollup-linux-riscv64-gnu': 4.62.4 - '@rollup/rollup-linux-riscv64-musl': 4.62.4 - '@rollup/rollup-linux-s390x-gnu': 4.62.4 - '@rollup/rollup-linux-x64-gnu': 4.62.4 - '@rollup/rollup-linux-x64-musl': 4.62.4 - '@rollup/rollup-openbsd-x64': 4.62.4 - '@rollup/rollup-openharmony-arm64': 4.62.4 - '@rollup/rollup-win32-arm64-msvc': 4.62.4 - '@rollup/rollup-win32-ia32-msvc': 4.62.4 - '@rollup/rollup-win32-x64-gnu': 4.62.4 - '@rollup/rollup-win32-x64-msvc': 4.62.4 - fsevents: 2.3.3 - - rollup@4.9.5: + rollup@4.59.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.5 - '@rollup/rollup-android-arm64': 4.9.5 - '@rollup/rollup-darwin-arm64': 4.9.5 - '@rollup/rollup-darwin-x64': 4.9.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.5 - '@rollup/rollup-linux-arm64-gnu': 4.9.5 - '@rollup/rollup-linux-arm64-musl': 4.9.5 - '@rollup/rollup-linux-riscv64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-musl': 4.9.5 - '@rollup/rollup-win32-arm64-msvc': 4.9.5 - '@rollup/rollup-win32-ia32-msvc': 4.9.5 - '@rollup/rollup-win32-x64-msvc': 4.9.5 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 router@1.3.8: @@ -19738,6 +18854,8 @@ snapshots: rsvp@4.8.5: {} + run-applescript@7.0.0: {} + run-async@2.4.1: {} run-parallel@1.2.0: @@ -19775,10 +18893,6 @@ snapshots: get-intrinsic: 1.2.2 is-regex: 1.1.4 - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 - safe-stable-stringify@2.4.3: {} safefs@4.2.0: @@ -19807,7 +18921,7 @@ snapshots: sass@1.44.0: dependencies: chokidar: 3.5.3 - immutable: 4.3.4 + immutable: 4.3.9 saucelabs@1.5.0: dependencies: @@ -19832,28 +18946,28 @@ snapshots: schema-utils@2.7.1: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + ajv: 6.14.0 + ajv-keywords: 3.5.2(ajv@6.14.0) schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + ajv: 6.14.0 + ajv-keywords: 3.5.2(ajv@6.14.0) schema-utils@4.2.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) secure-compare@3.0.1: {} @@ -19863,7 +18977,7 @@ snapshots: dependencies: jszip: 3.10.1 rimraf: 2.7.1 - tmp: 0.0.30 + tmp: 0.2.7 xml2js: 0.4.23 selfsigned@1.10.14: @@ -19876,8 +18990,6 @@ snapshots: dependencies: semver: 6.3.1 - semver-regex@1.0.0: {} - semver-regex@3.1.4: {} semver@5.7.2: {} @@ -19896,6 +19008,10 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.8.4: {} + + semver@7.8.5: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -19959,13 +19075,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -19976,16 +19085,10 @@ snapshots: dependencies: kind-of: 6.0.3 - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shelljs@0.8.5: @@ -20035,33 +19138,12 @@ snapshots: smart-buffer@4.2.0: {} + smol-toml@1.6.1: {} + snake-case@2.1.0: dependencies: no-case: 2.3.2 - snapdragon-node@2.1.1: - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 - - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - socket.io-adapter@2.5.2: dependencies: ws: 8.11.0 @@ -20098,24 +19180,24 @@ snapshots: socks-proxy-agent@5.0.1: dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) socks: 2.7.1 transitivePeerDependencies: - supports-color socks-proxy-agent@6.2.1: dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) socks: 2.7.1 transitivePeerDependencies: - supports-color socks-proxy-agent@7.0.0: dependencies: - agent-base: 6.0.2 - debug: 4.3.4 + agent-base: 6.0.2(supports-color@7.2.0) + debug: 4.4.3(supports-color@7.2.0) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -20123,7 +19205,7 @@ snapshots: socks-proxy-agent@8.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -20147,14 +19229,6 @@ snapshots: source-map-js: 0.6.2 webpack: 5.65.0(esbuild@0.14.11) - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - source-map-resolve@0.6.0: dependencies: atob: 2.1.2 @@ -20174,8 +19248,6 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-url@0.4.1: {} - source-map@0.5.7: {} source-map@0.6.1: {} @@ -20208,7 +19280,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -20219,7 +19291,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -20233,10 +19305,6 @@ snapshots: image-ssim: 0.2.0 jpeg-js: 0.4.4 - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - sprintf-js@1.0.3: {} sshpk@1.18.0: @@ -20272,17 +19340,10 @@ snapshots: state-toggle@1.0.3: {} - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - statuses@1.5.0: {} statuses@2.0.1: {} - std-env@3.7.0: {} - std-env@4.2.0: {} stealthy-require@1.1.1: {} @@ -20294,7 +19355,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -20400,16 +19461,10 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} - strip-literal@1.3.0: - dependencies: - acorn: 8.11.3 - strong-log-transformer@2.1.0: dependencies: duplexer: 0.1.2 @@ -20453,7 +19508,7 @@ snapshots: join-path: 1.1.1 lodash: 4.17.21 mime-types: 2.1.35 - minimatch: 3.1.2 + minimatch: 3.1.4 morgan: 1.10.0 nash: 3.0.0 on-finished: 2.4.1 @@ -20501,7 +19556,7 @@ snapshots: css-select-base-adapter: 0.1.1 css-tree: 1.0.0-alpha.37 csso: 4.2.0 - js-yaml: 3.14.1 + js-yaml: 3.15.0 mkdirp: 0.5.6 object.values: 1.1.7 sax: 1.2.4 @@ -20526,7 +19581,7 @@ snapshots: sync-content@1.0.2: dependencies: - glob: 10.3.10 + glob: 10.5.0 mkdirp: 3.0.1 path-scurry: 1.10.1 rimraf: 5.0.5 @@ -20580,7 +19635,7 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.9(esbuild@0.14.11)(webpack@5.65.0(esbuild@0.19.11)): + terser-webpack-plugin@5.3.9(esbuild@0.14.11)(webpack@5.65.0(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.20 jest-worker: 27.5.1 @@ -20591,15 +19646,15 @@ snapshots: optionalDependencies: esbuild: 0.14.11 - terser-webpack-plugin@5.6.1(esbuild@0.19.11)(webpack@5.106.2(esbuild@0.19.11)): + terser-webpack-plugin@5.6.1(esbuild@0.25.12)(webpack@5.106.2(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.49.0 - webpack: 5.106.2(esbuild@0.19.11) + webpack: 5.106.2(esbuild@0.25.12) optionalDependencies: - esbuild: 0.19.11 + esbuild: 0.25.12 terser@5.10.0(acorn@7.4.1): dependencies: @@ -20612,7 +19667,7 @@ snapshots: terser@5.24.0: dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + acorn: 8.18.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -20627,7 +19682,7 @@ snapshots: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 - minimatch: 3.1.2 + minimatch: 3.1.4 text-hex@1.0.0: {} @@ -20651,8 +19706,6 @@ snapshots: es5-ext: 0.10.62 next-tick: 1.1.0 - tinybench@2.6.0: {} - tinybench@2.9.0: {} tinyexec@1.3.0: {} @@ -20662,53 +19715,23 @@ snapshots: fdir: 6.5.0(picomatch@4.0.5) picomatch: 4.0.5 - tinypool@0.8.1: {} - tinyrainbow@3.1.1: {} - tinyspy@2.2.0: {} - title-case@2.1.1: dependencies: no-case: 2.3.2 upper-case: 1.1.3 - tmp@0.0.30: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.2.1: - dependencies: - rimraf: 3.0.2 + tmp@0.2.7: {} to-fast-properties@2.0.0: {} - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 - to-readable-stream@1.0.0: {} - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - to-regex@3.0.2: - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - toidentifier@1.0.1: {} tough-cookie@2.5.0: @@ -20748,23 +19771,9 @@ snapshots: dependencies: typescript: 5.7.3 - ts-node@10.9.1(@types/node@20.11.0)(typescript@5.7.3): + ts-api-utils@2.5.0(typescript@5.7.3): dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.0 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 5.7.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 ts-node@10.9.2(@types/node@20.11.0)(typescript@5.7.3): dependencies: @@ -20778,7 +19787,7 @@ snapshots: acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 - diff: 4.0.2 + diff: 4.0.4 make-error: 1.3.6 typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 @@ -20787,7 +19796,7 @@ snapshots: ts-node@8.10.2(typescript@5.7.3): dependencies: arg: 4.1.3 - diff: 4.0.2 + diff: 4.0.4 make-error: 1.3.6 source-map-support: 0.5.21 typescript: 5.7.3 @@ -20824,6 +19833,8 @@ snapshots: tslib@2.6.2: {} + tslib@2.8.1: {} + tsutils@3.21.0(typescript@5.7.3): dependencies: tslib: 1.14.1 @@ -20914,8 +19925,6 @@ snapshots: ua-parser-js@0.7.37: {} - ufo@1.3.2: {} - ultron@1.1.1: {} unbounded@1.3.0: @@ -20968,13 +19977,6 @@ snapshots: trough: 1.0.5 vfile: 4.2.1 - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - union@0.5.0: dependencies: qs: 6.11.2 @@ -21063,7 +20065,7 @@ snapshots: universal-analytics@0.4.23: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@7.2.0) request: 2.88.2 uuid: 3.4.0 transitivePeerDependencies: @@ -21082,11 +20084,6 @@ snapshots: has-value: 0.3.1 isobject: 3.0.1 - unset-value@1.0.0: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - unzipper@0.10.14: dependencies: big-integer: 1.6.52 @@ -21103,7 +20100,7 @@ snapshots: update-browserslist-db@1.0.13(browserslist@4.22.3): dependencies: browserslist: 4.22.3 - escalade: 3.1.1 + escalade: 3.2.0 picocolors: 1.1.1 update-browserslist-db@1.2.3(browserslist@4.28.7): @@ -21155,8 +20152,6 @@ snapshots: dependencies: punycode: 2.3.1 - urix@0.1.0: {} - url-join@0.0.1: {} url-join@2.0.5: {} @@ -21174,8 +20169,6 @@ snapshots: dependencies: iconv-lite: 0.4.24 - use@3.1.1: {} - util-deprecate@1.0.2: {} util.promisify@1.0.1: @@ -21199,13 +20192,6 @@ snapshots: valid-url@1.0.9: {} - validate-commit-msg@2.14.0: - dependencies: - conventional-commit-types: 2.3.0 - find-parent-dir: 0.3.1 - findup: 0.1.5 - semver-regex: 1.0.0 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -21215,10 +20201,6 @@ snapshots: dependencies: builtins: 1.0.3 - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.0.1 - validate.js@0.12.0: {} vary@1.1.2: {} @@ -21261,43 +20243,13 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@1.2.1(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.0.11(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite@5.0.11(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0): - dependencies: - esbuild: 0.19.11 - postcss: 8.4.33 - rollup: 4.9.5 - optionalDependencies: - '@types/node': 20.11.0 - fsevents: 2.3.3 - less: 4.1.2 - sass: 1.44.0 - stylus: 0.55.0 - terser: 5.49.0 - - vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0): + vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.5) picomatch: 4.0.5 postcss: 8.5.25 - rollup: 4.62.4 + rollup: 4.59.0 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 20.11.0 @@ -21306,46 +20258,12 @@ snapshots: sass: 1.44.0 stylus: 0.55.0 terser: 5.49.0 + yaml: 2.9.0 - vitest@1.2.1(@types/node@20.11.0)(jsdom@15.2.1)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0): - dependencies: - '@vitest/expect': 1.2.1 - '@vitest/runner': 1.2.1 - '@vitest/snapshot': 1.2.1 - '@vitest/spy': 1.2.1 - '@vitest/utils': 1.2.1 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.5 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.6.0 - tinypool: 0.8.1 - vite: 5.0.11(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) - vite-node: 1.2.1(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.11.0 - jsdom: 15.2.1 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vitest@4.1.10(@types/node@20.11.0)(jsdom@15.2.1)(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)): + vitest@4.1.10(@types/node@20.11.0)(jsdom@15.2.1)(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)) + '@vitest/mocker': 4.1.10(vite@6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -21362,7 +20280,7 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0) + vite: 6.4.3(@types/node@20.11.0)(less@4.1.2)(sass@1.44.0)(stylus@0.55.0)(terser@5.49.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.11.0 @@ -21372,7 +20290,7 @@ snapshots: vm2@3.9.19: dependencies: - acorn: 8.11.3 + acorn: 8.18.0 acorn-walk: 8.3.2 void-elements@2.0.1: {} @@ -21450,7 +20368,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.65.0(esbuild@0.14.11) - webpack-dev-middleware@5.3.3(webpack@5.65.0(esbuild@0.19.11)): + webpack-dev-middleware@5.3.3(webpack@5.65.0(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 3.6.0 @@ -21459,7 +20377,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.65.0(esbuild@0.14.11) - webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.19.11)): + webpack-dev-server@4.6.0(webpack@5.65.0(esbuild@0.25.12)): dependencies: ansi-html-community: 0.0.8 bonjour: 3.5.0 @@ -21485,7 +20403,7 @@ snapshots: strip-ansi: 7.1.0 url: 0.11.3 webpack: 5.65.0(esbuild@0.14.11) - webpack-dev-middleware: 5.3.3(webpack@5.65.0(esbuild@0.19.11)) + webpack-dev-middleware: 5.3.3(webpack@5.65.0(esbuild@0.25.12)) ws: 8.14.2 transitivePeerDependencies: - '@types/express' @@ -21508,7 +20426,7 @@ snapshots: typed-assert: 1.0.9 webpack: 5.65.0(esbuild@0.14.11) - webpack@5.106.2(esbuild@0.19.11): + webpack@5.106.2(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -21531,7 +20449,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(esbuild@0.19.11)(webpack@5.106.2(esbuild@0.19.11)) + terser-webpack-plugin: 5.6.1(esbuild@0.25.12)(webpack@5.106.2(esbuild@0.25.12)) watchpack: 2.5.2 webpack-sources: 3.5.1 transitivePeerDependencies: @@ -21571,7 +20489,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.14.11)(webpack@5.65.0(esbuild@0.19.11)) + terser-webpack-plugin: 5.3.9(esbuild@0.14.11)(webpack@5.65.0(esbuild@0.25.12)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -21632,16 +20550,15 @@ snapshots: dependencies: isexe: 2.0.0 + which@3.0.1: + dependencies: + isexe: 2.0.0 + which@4.0.0: dependencies: isexe: 3.1.1 optional: true - why-is-node-running@2.2.2: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -21773,7 +20690,9 @@ snapshots: yallist@4.0.0: {} - yaml@1.10.2: {} + yaml@1.10.3: {} + + yaml@2.9.0: {} yamljs@0.3.0: dependencies: @@ -21847,8 +20766,6 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} - zip-stream@2.1.3: dependencies: archiver-utils: 2.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b55db3d4d1..36bbb9368a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,7 +11,7 @@ allowBuilds: 'esbuild@0.14.11 || 0.19.11 || 0.25.12': true 'husky@4.3.8': true 'nice-napi@1.0.2': true - 'nx@15.9.3 || 17.3.2': true + 'nx@15.9.3 || 17.3.2 || 23.1.1': true 'protobufjs@6.11.2 || 6.11.4 || 7.2.5': true 're2@1.20.9': true diff --git a/scripts/check-release-coherence.mjs b/scripts/check-release-coherence.mjs index 01c7890247..fdafc61d2e 100644 --- a/scripts/check-release-coherence.mjs +++ b/scripts/check-release-coherence.mjs @@ -121,20 +121,25 @@ function auditReleaseMatrix(input, errors) { ]) { if (source.includes('rxjs.dev')) errors.push(`${label} must not build, test, publish, or otherwise reference rxjs.dev.`); } - if (!/node-version:\s*['"]24['"]/.test(input.publishWorkflowSource)) { - errors.push('Publishing must use the supported Node 24 lane.'); + if (!/node-version:\s*['"]24\.12\.0['"]/.test(input.publishWorkflowSource)) { + errors.push('Publishing must use exact Node 24.12.0.'); } if ( !/Verify release policy and repository configuration[\s\S]*?Build release packages[\s\S]*?Pack, inventory, and hash/.test( input.publishWorkflowSource ) ) { - errors.push('Publishing must verify release policy before building and packing one candidate.'); + errors.push('Qualification must verify release policy before building and packing each independent candidate.'); } for (const requirement of [ 'RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }}', + 'compare-release-candidates.mjs', + 'Exact tarballs / package, type, import, and migration gates', + 'pnpm --filter @rxjs/observable-polyfill --filter @rxjs/test --filter @rxjs/migrate run test', + 'run test:imports', 'release-candidate.mjs verify', 'release-candidate.mjs hydrate', + 'authorize-stage.mjs', 'stage-release.mjs publish', 'id-token: write', ]) { @@ -230,7 +235,10 @@ export async function readReleaseCoherenceInput(root = repositoryRoot) { readFile(resolve(root, '.github/workflows/ci_ts_latest.yml'), 'utf8'), readFile(resolve(root, '.github/workflows/observable-wpt.yml'), 'utf8'), readFile(resolve(root, '.github/workflows/release-readiness.yml'), 'utf8'), - readFile(resolve(root, '.github/workflows/release-stage.yml'), 'utf8'), + Promise.all([ + readFile(resolve(root, '.github/workflows/release-qualify.yml'), 'utf8'), + readFile(resolve(root, '.github/workflows/release-stage.yml'), 'utf8'), + ]).then((sources) => sources.join('\n')), readFile(resolve(root, 'packages/rxjs/test/release/safari-driver.mjs'), 'utf8'), readFile(resolve(root, 'packages/observable-polyfill/test/wpt/lib/runner.mjs'), 'utf8'), ]); diff --git a/scripts/check-release-coherence.test.mjs b/scripts/check-release-coherence.test.mjs index 741fcb287c..43171710ca 100644 --- a/scripts/check-release-coherence.test.mjs +++ b/scripts/check-release-coherence.test.mjs @@ -55,13 +55,18 @@ function validInput() { 'pnpm --filter @rxjs/migrate run build', ].join('\n'), publishWorkflowSource: [ - "node-version: '24'", + "node-version: '24.12.0'", 'Verify release policy and repository configuration', 'Build release packages', 'Pack, inventory, and hash', 'RELEASE_EXPECTED_SOURCE_COMMIT: ${{ github.sha }}', + 'compare-release-candidates.mjs', + 'Exact tarballs / package, type, import, and migration gates', + 'pnpm --filter @rxjs/observable-polyfill --filter @rxjs/test --filter @rxjs/migrate run test', + 'run test:imports', 'release-candidate.mjs verify', 'release-candidate.mjs hydrate', + 'authorize-stage.mjs', 'stage-release.mjs publish', 'id-token: write', ].join('\n'), diff --git a/scripts/release/authorize-stage.mjs b/scripts/release/authorize-stage.mjs new file mode 100644 index 0000000000..143be1edc1 --- /dev/null +++ b/scripts/release/authorize-stage.mjs @@ -0,0 +1,95 @@ +#!/usr/bin/env node + +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; +import { releaseBranch, releaseOperatorLogin } from './release-config.mjs'; +import { manifestDigest, verifyCandidate } from './release-candidate.mjs'; + +const maximumArtifactAgeMs = 30 * 24 * 60 * 60_000; + +export function validateStageAuthorization({ + run, + artifact, + currentHead, + actor, + version, + manifest, + manifestSha512, + replayed, + now = Date.now(), +}) { + assert.equal(actor, releaseOperatorLogin, `Only ${releaseOperatorLogin} may authorize npm staging.`); + assert.equal(run.id, Number(run.id), 'Qualification run ID must be numeric.'); + assert.equal(run.name, 'Qualify RxJS 9 release', 'Referenced run is not the qualification workflow.'); + assert.equal(run.event, 'push', 'Qualification must originate from a protected master push.'); + assert.equal(run.head_branch, releaseBranch, 'Qualification run is not on master.'); + assert.equal(run.conclusion, 'success', 'Qualification run did not succeed.'); + assert.equal(run.head_sha, currentHead, 'Qualification run is not for the current master head.'); + assert.equal(manifest.sourceCommit, currentHead, 'Candidate source commit is not the current master head.'); + assert.equal(manifest.version, version, 'Typed version does not match the qualified candidate.'); + assert.match(manifestSha512, /^[0-9a-f]{128}$/, 'Manifest SHA-512 must be 128 lowercase hexadecimal characters.'); + assert.equal(manifest.reproducible, true, 'Candidate has not passed independent reproducibility.'); + assert.equal(manifest.independentBuilds?.length, 2, 'Candidate does not record two independent builds.'); + assert.equal(artifact.expired, false, 'Qualification artifact has expired.'); + assert.equal(artifact.name, `rxjs-release-candidate-${run.id}`, 'Qualification artifact name does not match the run ID.'); + assert.ok(now - Date.parse(run.created_at) <= maximumArtifactAgeMs, 'Qualification run is older than 30 days.'); + assert.equal(replayed, false, `${version} already has a tag or GitHub Release; staging replay is forbidden.`); +} + +export async function validateDownloadedCandidate(candidateRoot, expectedVersion, expectedDigest) { + const manifest = await verifyCandidate(candidateRoot); + const actualDigest = await manifestDigest(candidateRoot); + assert.equal(manifest.version, expectedVersion, 'Typed version does not match the downloaded candidate.'); + assert.equal(actualDigest, expectedDigest, 'Typed manifest SHA-512 does not match the downloaded candidate.'); + return manifest; +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + const [repository, runIdText, version, expectedDigest, candidateDirectory] = process.argv.slice(2); + const token = process.env.GH_TOKEN; + const actor = process.env.RELEASE_ACTOR; + if (!repository || !/^\d+$/.test(runIdText ?? '') || !version || !expectedDigest || !candidateDirectory || !token || !actor) { + throw new Error( + 'Usage: authorize-stage.mjs ; GH_TOKEN and RELEASE_ACTOR are required.' + ); + } + const runId = Number(runIdText); + const [run, artifacts, reference, tag, release] = await Promise.all([ + github(`/repos/${repository}/actions/runs/${runId}`, token), + github(`/repos/${repository}/actions/runs/${runId}/artifacts`, token), + github(`/repos/${repository}/git/ref/heads/${releaseBranch}`, token), + github(`/repos/${repository}/git/ref/tags/${encodeURIComponent(version)}`, token, [404]), + github(`/repos/${repository}/releases/tags/${encodeURIComponent(version)}`, token, [404]), + ]); + const artifact = artifacts.artifacts?.find(({ name }) => name === `rxjs-release-candidate-${runId}`); + if (!artifact) throw new Error(`Qualification run ${runId} does not contain its exact candidate artifact.`); + const manifest = await validateDownloadedCandidate(path.resolve(candidateDirectory), version, expectedDigest); + validateStageAuthorization({ + run, + artifact, + currentHead: reference.object.sha, + actor, + version, + manifest, + manifestSha512: expectedDigest, + replayed: tag !== null || release !== null, + }); + process.stdout.write( + `${JSON.stringify({ runId, version, sourceCommit: manifest.sourceCommit, pullRequest: manifest.authorizingPullRequest })}\n` + ); +} + +async function github(endpoint, token, nullableStatuses = []) { + const response = await fetch(`https://api.github.com${endpoint}`, { + headers: { + accept: 'application/vnd.github+json', + authorization: `Bearer ${token}`, + 'x-github-api-version': '2022-11-28', + }, + }); + if (nullableStatuses.includes(response.status)) return null; + if (!response.ok) throw new Error(`GitHub request ${endpoint} failed: ${response.status} ${await response.text()}`); + return response.json(); +} diff --git a/scripts/release/authorize-stage.test.mjs b/scripts/release/authorize-stage.test.mjs new file mode 100644 index 0000000000..aec17880e3 --- /dev/null +++ b/scripts/release/authorize-stage.test.mjs @@ -0,0 +1,116 @@ +import assert from 'node:assert/strict'; +import { createHash } from 'node:crypto'; +import { mkdtemp, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import test from 'node:test'; +import fc from 'fast-check'; +import { validateDownloadedCandidate, validateStageAuthorization } from './authorize-stage.mjs'; +import { releasePackages, releaseToolchain } from './release-config.mjs'; + +const digest = 'a'.repeat(128); +const head = 'b'.repeat(40); +const now = Date.parse('2026-08-02T12:00:00Z'); + +function valid() { + return { + run: { + id: 123, + name: 'Qualify RxJS 9 release', + event: 'push', + head_branch: 'master', + head_sha: head, + conclusion: 'success', + created_at: '2026-08-02T00:00:00Z', + }, + artifact: { name: 'rxjs-release-candidate-123', expired: false }, + currentHead: head, + actor: 'benlesh', + version: '9.0.0-beta.1', + manifest: { sourceCommit: head, version: '9.0.0-beta.1', reproducible: true, independentBuilds: [{}, {}] }, + manifestSha512: digest, + replayed: false, + now, + }; +} + +test('rejects every wrong manual-stage authorization dimension', () => { + validateStageAuthorization(valid()); + for (const mutate of [ + (value) => (value.actor = 'attacker'), + (value) => (value.run.id = '123'), + (value) => (value.run.name = 'CI'), + (value) => (value.run.event = 'workflow_dispatch'), + (value) => (value.run.head_branch = 'feature'), + (value) => (value.run.conclusion = 'failure'), + (value) => (value.run.head_sha = 'c'.repeat(40)), + (value) => (value.currentHead = 'c'.repeat(40)), + (value) => (value.manifest.sourceCommit = 'c'.repeat(40)), + (value) => (value.manifest.version = '9.0.0-beta.2'), + (value) => (value.manifestSha512 = 'wrong'), + (value) => (value.artifact.expired = true), + (value) => (value.artifact.name = 'other'), + (value) => (value.manifest.reproducible = false), + (value) => (value.manifest.independentBuilds = [{}]), + (value) => (value.run.created_at = '2026-06-01T00:00:00Z'), + (value) => (value.replayed = true), + ]) { + const value = structuredClone(valid()); + mutate(value); + assert.throws(() => validateStageAuthorization(value)); + } +}); + +test('manifest authorization is exact for arbitrary typed versions and digests', async () => { + const root = await mkdtemp(path.join(tmpdir(), 'rxjs-stage-auth-')); + try { + const packages = []; + for (const [index, { name }] of releasePackages.entries()) { + const filename = `${index}.tgz`; + const bytes = Buffer.from(name); + await writeFile(path.join(root, filename), bytes); + packages.push({ + name, + version: '9.0.0-beta.1', + filename, + size: bytes.length, + sha256: createHash('sha256').update(bytes).digest('hex'), + sha512: createHash('sha512').update(bytes).digest('hex'), + integrity: `sha512-${createHash('sha512').update(bytes).digest('base64')}`, + contents: [], + }); + } + await writeFile( + path.join(root, 'release-manifest.json'), + JSON.stringify({ + schemaVersion: 2, + sourceCommit: head, + authorizingPullRequest: 123, + version: '9.0.0-beta.1', + channel: 'next', + toolchain: releaseToolchain, + build: { id: 'a', runner: 'ubuntu-24.04' }, + reproducible: true, + independentBuilds: [{}, {}], + packages, + }) + ); + const bytes = await import('node:fs/promises').then(({ readFile }) => readFile(path.join(root, 'release-manifest.json'))); + const actual = createHash('sha512').update(bytes).digest('hex'); + await validateDownloadedCandidate(root, '9.0.0-beta.1', actual); + await assert.rejects(() => validateDownloadedCandidate(root, '9.0.0-beta.1', 'b'.repeat(128)), /SHA-512/); + await fc.assert( + fc.asyncProperty( + fc.string().filter((value) => value !== '9.0.0-beta.1'), + async (value) => { + await assert.rejects(() => validateDownloadedCandidate(root, value, actual), /Typed version/); + } + ), + { numRuns: 50 } + ); + await writeFile(path.join(root, packages[0].filename), 'changed bytes'); + await assert.rejects(() => validateDownloadedCandidate(root, '9.0.0-beta.1', actual), /size changed|SHA-256 changed/); + } finally { + await rm(root, { recursive: true, force: true }); + } +}); diff --git a/scripts/release/bootstrap-release.mjs b/scripts/release/bootstrap-release.mjs deleted file mode 100644 index d577c23b4b..0000000000 --- a/scripts/release/bootstrap-release.mjs +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env node - -import { spawnSync } from 'node:child_process'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { releasePackages } from './release-config.mjs'; -import { verifyCandidate } from './release-candidate.mjs'; - -const root = fileURLToPath(new URL('../..', import.meta.url)); -const args = parseArgs(process.argv.slice(2)); -if (!args['acknowledge-irreversible-bootstrap']) { - throw new Error('Refusing bootstrap without --acknowledge-irreversible-bootstrap. Read docs/RELEASE_PROCESS.md first.'); -} -if (process.env.NPM_TOKEN || process.env.NODE_AUTH_TOKEN) { - throw new Error('Bootstrap refuses long-lived npm token environment variables. Use the release maintainer account and interactive TFA.'); -} - -const candidateRoot = path.resolve(root, args.candidate ?? '.release/bootstrap-candidate'); -if (args['run-id']) { - run('gh', ['run', 'download', args['run-id'], '--name', `rxjs-release-candidate-${args['run-id']}`, '--dir', candidateRoot], root); -} -const manifest = await verifyCandidate(candidateRoot); -for (const entry of manifest.packages) { - run( - 'gh', - ['attestation', 'verify', path.join(candidateRoot, entry.filename), '--repo', process.env.GITHUB_REPOSITORY ?? 'ReactiveX/rxjs'], - root - ); -} - -process.stdout.write( - `Verified ${manifest.version}. Interactive npm publication will now run in dependency order; rxjs is last. Every command must receive TFA.\n` -); -for (const expected of releasePackages) { - const entry = manifest.packages.find(({ name }) => name === expected.name); - run('npm', ['publish', path.join(candidateRoot, entry.filename), '--tag', manifest.channel], root, { inherit: true }); -} - -function parseArgs(values) { - const parsed = {}; - for (let index = 0; index < values.length; index++) { - const value = values[index]; - if (value === '--acknowledge-irreversible-bootstrap') parsed['acknowledge-irreversible-bootstrap'] = true; - else if (value === '--candidate' || value === '--run-id') parsed[value.slice(2)] = values[++index]; - else throw new Error(`Unknown bootstrap argument: ${value}`); - } - return parsed; -} - -function run(command, commandArgs, cwd, { inherit = false } = {}) { - const result = spawnSync(command, commandArgs, { cwd, encoding: inherit ? undefined : 'utf8', stdio: inherit ? 'inherit' : 'pipe' }); - if (result.status !== 0) { - throw new Error(`${command} ${commandArgs.join(' ')} failed (${result.status}).${inherit ? '' : `\n${result.stdout}${result.stderr}`}`); - } - return result; -} diff --git a/scripts/release/compare-release-candidates.mjs b/scripts/release/compare-release-candidates.mjs new file mode 100644 index 0000000000..90aa41ec84 --- /dev/null +++ b/scripts/release/compare-release-candidates.mjs @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +import path from 'node:path'; +import { compareCandidates } from './release-candidate.mjs'; + +const [first, second, output] = process.argv.slice(2); +if (!first || !second || !output) throw new Error('Usage: compare-release-candidates.mjs '); +const manifest = await compareCandidates(path.resolve(first), path.resolve(second), path.resolve(output)); +process.stdout.write(`${JSON.stringify({ version: manifest.version, sourceCommit: manifest.sourceCommit, reproducible: true })}\n`); diff --git a/scripts/release/finalize-release.mjs b/scripts/release/finalize-release.mjs index 627d98fca0..85dd076c32 100644 --- a/scripts/release/finalize-release.mjs +++ b/scripts/release/finalize-release.mjs @@ -1,8 +1,13 @@ #!/usr/bin/env node -import { readFile } from 'node:fs/promises'; +import { spawnSync } from 'node:child_process'; +import { mkdtemp, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { verifyCandidate } from './release-candidate.mjs'; -const manifest = JSON.parse(await readFile(process.argv[2], 'utf8')); +const candidateRoot = path.resolve(process.argv[2]); +const manifest = await verifyCandidate(candidateRoot); for (const entry of manifest.packages) { const url = `https://registry.npmjs.org/${encodeURIComponent(entry.name)}/${encodeURIComponent(entry.version)}`; const response = await fetch(url, { headers: { accept: 'application/json' } }); @@ -18,3 +23,32 @@ for (const entry of manifest.packages) { } process.stdout.write(`Verified public ${entry.name}@${entry.version} at ${entry.integrity}.\n`); } + +if (!process.exitCode) { + const auditRoot = await mkdtemp(path.join(tmpdir(), 'rxjs-release-signatures-')); + try { + await writeFile( + path.join(auditRoot, 'package.json'), + `${JSON.stringify( + { + name: 'rxjs-release-signature-audit', + private: true, + dependencies: Object.fromEntries(manifest.packages.map(({ name, version }) => [name, version])), + }, + null, + 2 + )}\n` + ); + run('npm', ['install', '--ignore-scripts', '--package-lock-only', '--no-audit', '--no-fund'], auditRoot); + run('npm', ['audit', 'signatures'], auditRoot); + process.stdout.write('Verified npm registry signatures and provenance for the public release train.\n'); + } finally { + await rm(auditRoot, { recursive: true, force: true }); + } +} + +function run(command, args, cwd) { + const result = spawnSync(command, args, { cwd, encoding: 'utf8' }); + if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} failed (${result.status}).\n${result.stdout}${result.stderr}`); + return result; +} diff --git a/scripts/release/generate-release-evidence.mjs b/scripts/release/generate-release-evidence.mjs new file mode 100644 index 0000000000..196224d7ca --- /dev/null +++ b/scripts/release/generate-release-evidence.mjs @@ -0,0 +1,65 @@ +#!/usr/bin/env node + +import { spawnSync } from 'node:child_process'; +import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { recordEvidence, verifyCandidate } from './release-candidate.mjs'; + +const root = fileURLToPath(new URL('../..', import.meta.url)); +const candidateRoot = path.resolve(root, process.argv[2] ?? '.release/candidate'); +const manifest = await verifyCandidate(candidateRoot); +if (!manifest.reproducible || manifest.independentBuilds.length !== 2) { + throw new Error('Release evidence requires two matching independent builds.'); +} + +const temporaryRoot = await mkdtemp(path.join(tmpdir(), 'rxjs-release-evidence-')); +try { + const dependencies = Object.fromEntries( + manifest.packages.map(({ name, filename }) => [name, `file:${path.join(candidateRoot, filename)}`]) + ); + await writeFile( + path.join(temporaryRoot, 'package.json'), + `${JSON.stringify({ name: 'rxjs-release-train-evidence', version: manifest.version, private: true, dependencies }, null, 2)}\n` + ); + run('npm', ['install', '--ignore-scripts', '--no-audit', '--no-fund', '--package-lock-only'], temporaryRoot); + run('npm', ['install', '--ignore-scripts', '--no-audit', '--no-fund'], temporaryRoot); + const sbom = run('npm', ['sbom', '--sbom-format', 'cyclonedx', '--json'], temporaryRoot).stdout; + const parsed = JSON.parse(sbom); + delete parsed.serialNumber; + parsed.metadata ??= {}; + delete parsed.metadata.timestamp; + normalizeLocalPaths(parsed); + const sbomFilename = `rxjs-${manifest.version}.cdx.json`; + const lockFilename = `rxjs-${manifest.version}.release-lock.json`; + await writeFile(path.join(candidateRoot, sbomFilename), `${JSON.stringify(parsed, null, 2)}\n`); + const releaseLock = JSON.parse(await readFile(path.join(temporaryRoot, 'package-lock.json'), 'utf8')); + normalizeLocalPaths(releaseLock); + await writeFile(path.join(candidateRoot, lockFilename), `${JSON.stringify(releaseLock, null, 2)}\n`); + await recordEvidence(candidateRoot, [sbomFilename, lockFilename]); + process.stdout.write(`${JSON.stringify({ sbomFilename, lockFilename })}\n`); +} finally { + await rm(temporaryRoot, { recursive: true, force: true }); +} + +function normalizeLocalPaths(value) { + if (Array.isArray(value)) { + for (const item of value) normalizeLocalPaths(item); + return; + } + if (!value || typeof value !== 'object') return; + for (const [key, item] of Object.entries(value)) { + if (typeof item === 'string') { + value[key] = item.replaceAll(candidateRoot, '.').replaceAll(temporaryRoot, '.'); + } else { + normalizeLocalPaths(item); + } + } +} + +function run(command, args, cwd) { + const result = spawnSync(command, args, { cwd, encoding: 'utf8' }); + if (result.status !== 0) throw new Error(`${command} ${args.join(' ')} failed (${result.status}).\n${result.stdout}${result.stderr}`); + return result; +} diff --git a/scripts/release/install-pinned-npm.mjs b/scripts/release/install-pinned-npm.mjs new file mode 100644 index 0000000000..a22ee17d97 --- /dev/null +++ b/scripts/release/install-pinned-npm.mjs @@ -0,0 +1,47 @@ +#!/usr/bin/env node + +import { spawnSync } from 'node:child_process'; +import { createHash } from 'node:crypto'; +import { mkdir, readFile, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; +import { releaseToolchain } from './release-config.mjs'; + +export function verifyRegistryIntegrity(bytes, expectedIntegrity = releaseToolchain.npmIntegrity) { + const actual = `sha512-${createHash('sha512').update(bytes).digest('base64')}`; + if (actual !== expectedIntegrity) + throw new Error(`npm registry tarball integrity mismatch: expected ${expectedIntegrity}, got ${actual}.`); + return actual; +} + +export async function installPinnedNpm(installRoot) { + const metadataUrl = `https://registry.npmjs.org/npm/${releaseToolchain.npm}`; + const metadataResponse = await fetch(metadataUrl, { headers: { accept: 'application/json' } }); + if (!metadataResponse.ok) throw new Error(`npm registry metadata request failed with HTTP ${metadataResponse.status}.`); + const metadata = await metadataResponse.json(); + if (metadata.version !== releaseToolchain.npm || metadata.dist?.integrity !== releaseToolchain.npmIntegrity) { + throw new Error('The npm registry metadata does not match the checked-in npm version and SHA-512.'); + } + const tarballResponse = await fetch(metadata.dist.tarball); + if (!tarballResponse.ok) throw new Error(`npm registry tarball request failed with HTTP ${tarballResponse.status}.`); + const bytes = Buffer.from(await tarballResponse.arrayBuffer()); + verifyRegistryIntegrity(bytes); + + await mkdir(installRoot, { recursive: true }); + const tarball = path.join(installRoot, `npm-${releaseToolchain.npm}.tgz`); + await writeFile(tarball, bytes); + const result = spawnSync('npm', ['install', '--global', '--ignore-scripts', '--prefix', installRoot, tarball], { + encoding: 'utf8', + env: { ...process.env, NPM_CONFIG_AUDIT: 'false', NPM_CONFIG_FUND: 'false' }, + }); + if (result.status !== 0) throw new Error(`Installing the verified npm CLI failed (${result.status}).\n${result.stdout}${result.stderr}`); + const executable = path.join(installRoot, 'bin', 'npm'); + await readFile(executable); + return executable; +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + const installRoot = path.resolve(process.argv[2] ?? '.release/npm-cli'); + const executable = await installPinnedNpm(installRoot); + process.stdout.write(`${executable}\n`); +} diff --git a/scripts/release/install-pinned-npm.test.mjs b/scripts/release/install-pinned-npm.test.mjs new file mode 100644 index 0000000000..1441df90dc --- /dev/null +++ b/scripts/release/install-pinned-npm.test.mjs @@ -0,0 +1,17 @@ +import assert from 'node:assert/strict'; +import { createHash } from 'node:crypto'; +import test from 'node:test'; +import fc from 'fast-check'; +import { verifyRegistryIntegrity } from './install-pinned-npm.mjs'; + +test('accepts only the checked SHA-512 bytes', () => { + fc.assert( + fc.property(fc.uint8Array({ maxLength: 4096 }), (value) => { + const bytes = Buffer.from(value); + const integrity = `sha512-${createHash('sha512').update(bytes).digest('base64')}`; + assert.equal(verifyRegistryIntegrity(bytes, integrity), integrity); + assert.throws(() => verifyRegistryIntegrity(Buffer.concat([bytes, Buffer.of(0)]), integrity), /integrity mismatch/); + }), + { numRuns: 100 } + ); +}); diff --git a/scripts/release/release-candidate.mjs b/scripts/release/release-candidate.mjs index 80f79aafe7..3f00835ffb 100644 --- a/scripts/release/release-candidate.mjs +++ b/scripts/release/release-candidate.mjs @@ -3,12 +3,12 @@ import assert from 'node:assert/strict'; import { spawnSync } from 'node:child_process'; import { createHash } from 'node:crypto'; -import { cp, mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises'; +import { cp, mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { auditPackedPackage } from '../prerelease-adoption-lib.mjs'; -import { channelForVersion, releasePackages } from './release-config.mjs'; +import { channelForVersion, releasePackages, releaseToolchain } from './release-config.mjs'; const root = fileURLToPath(new URL('../..', import.meta.url)); if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { @@ -18,7 +18,9 @@ if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { if (command === 'build') await buildCandidate(candidateRoot, { expectedSourceCommit }); else if (command === 'verify') await verifyCandidate(candidateRoot, { expectedSourceCommit }); else if (command === 'hydrate') await hydrateCandidate(candidateRoot, { expectedSourceCommit }); - else throw new Error('Usage: release-candidate.mjs [candidate-directory]'); + else if (command === 'record-evidence') await recordEvidence(candidateRoot, process.argv.slice(4)); + else if (command === 'manifest-digest') process.stdout.write(`${await manifestDigest(candidateRoot)}\n`); + else throw new Error('Usage: release-candidate.mjs [candidate-directory]'); } async function buildCandidate(outputRoot, { expectedSourceCommit } = {}) { @@ -58,11 +60,18 @@ async function buildCandidate(outputRoot, { expectedSourceCommit } = {}) { assert.equal(versions.size, 1, 'Candidate packages must have one synchronized version.'); const [version] = versions; const manifest = { - schemaVersion: 1, + schemaVersion: 2, sourceCommit: run('git', ['rev-parse', 'HEAD'], root).stdout.trim(), + authorizingPullRequest: Number(process.env.RELEASE_AUTHORIZING_PR ?? 0), version, channel: channelForVersion(version), - generatedAt: new Date().toISOString(), + toolchain: releaseToolchain, + build: { + id: process.env.RELEASE_BUILD_ID ?? 'local', + runner: process.env.RELEASE_RUNNER_IMAGE ?? process.platform, + }, + reproducible: false, + independentBuilds: [], packages, }; await writeFile(path.join(outputRoot, 'release-manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`); @@ -72,8 +81,13 @@ async function buildCandidate(outputRoot, { expectedSourceCommit } = {}) { export async function verifyCandidate(outputRoot, { expectedSourceCommit } = {}) { const manifest = JSON.parse(await readFile(path.join(outputRoot, 'release-manifest.json'), 'utf8')); - assert.equal(manifest.schemaVersion, 1); + assert.equal(manifest.schemaVersion, 2); + assert.deepEqual(manifest.toolchain, releaseToolchain, 'Candidate toolchain drifted.'); if (expectedSourceCommit) assert.equal(manifest.sourceCommit, expectedSourceCommit, 'Candidate source commit changed.'); + assert.ok( + Number.isSafeInteger(manifest.authorizingPullRequest) && manifest.authorizingPullRequest >= 0, + 'Authorizing pull request is invalid.' + ); assert.equal(manifest.packages.length, releasePackages.length); assert.deepEqual( manifest.packages.map(({ name }) => name), @@ -91,10 +105,69 @@ export async function verifyCandidate(outputRoot, { expectedSourceCommit } = {}) assert.equal(createHash('sha512').update(bytes).digest('hex'), entry.sha512, `${entry.name} SHA-512 changed.`); assert.equal(`sha512-${createHash('sha512').update(bytes).digest('base64')}`, entry.integrity, `${entry.name} integrity changed.`); } + const expectedFiles = new Set(['release-manifest.json', ...manifest.packages.map(({ filename }) => filename)]); + for (const evidence of manifest.evidence ?? []) { + const evidencePath = path.join(outputRoot, evidence.filename); + const bytes = await readFile(evidencePath); + assert.equal(createHash('sha512').update(bytes).digest('hex'), evidence.sha512, `${evidence.filename} SHA-512 changed.`); + expectedFiles.add(evidence.filename); + } + const actualFiles = new Set(await readdir(outputRoot)); + assert.deepEqual(actualFiles, expectedFiles, 'Candidate contains missing or additional files.'); process.stdout.write(`Verified exact candidate ${manifest.version} (${manifest.sourceCommit}).\n`); return manifest; } +export async function compareCandidates(firstRoot, secondRoot, outputRoot) { + const first = await verifyCandidate(firstRoot); + const second = await verifyCandidate(secondRoot); + const normalized = (manifest) => ({ + schemaVersion: manifest.schemaVersion, + sourceCommit: manifest.sourceCommit, + authorizingPullRequest: manifest.authorizingPullRequest, + version: manifest.version, + channel: manifest.channel, + toolchain: manifest.toolchain, + packages: manifest.packages, + }); + assert.deepEqual(normalized(second), normalized(first), 'Independent build manifest or inventory drifted.'); + for (const entry of first.packages) { + assert.deepEqual( + await readFile(path.join(secondRoot, entry.filename)), + await readFile(path.join(firstRoot, entry.filename)), + `${entry.name} was not byte-identical across independent builds.` + ); + } + await rm(outputRoot, { recursive: true, force: true }); + await cp(firstRoot, outputRoot, { recursive: true }); + first.reproducible = true; + first.independentBuilds = [first, second].map((manifest) => ({ id: manifest.build.id, runner: manifest.build.runner })); + await writeFile(path.join(outputRoot, 'release-manifest.json'), `${JSON.stringify(first, null, 2)}\n`); + return verifyCandidate(outputRoot); +} + +export async function recordEvidence(outputRoot, filenames) { + assert.ok(filenames.length > 0, 'At least one evidence filename is required.'); + const manifestPath = path.join(outputRoot, 'release-manifest.json'); + const manifest = JSON.parse(await readFile(manifestPath, 'utf8')); + const packageFiles = new Set(manifest.packages.map(({ filename }) => filename)); + const evidence = new Map((manifest.evidence ?? []).map((entry) => [entry.filename, entry])); + for (const filename of filenames) { + assert.equal(path.basename(filename), filename, 'Evidence filenames must not contain a path.'); + assert.ok(!packageFiles.has(filename) && filename !== 'release-manifest.json', `${filename} is not an evidence filename.`); + const bytes = await readFile(path.join(outputRoot, filename)); + evidence.set(filename, { filename, size: bytes.length, sha512: createHash('sha512').update(bytes).digest('hex') }); + } + manifest.evidence = [...evidence.values()].sort((a, b) => a.filename.localeCompare(b.filename)); + await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`); + return verifyCandidate(outputRoot); +} + +export async function manifestDigest(outputRoot) { + const bytes = await readFile(path.join(outputRoot, 'release-manifest.json')); + return createHash('sha512').update(bytes).digest('hex'); +} + async function hydrateCandidate(outputRoot, { expectedSourceCommit } = {}) { const manifest = await verifyCandidate(outputRoot, { expectedSourceCommit }); const temporaryRoot = await mkdtemp(path.join(tmpdir(), 'rxjs-release-hydrate-')); diff --git a/scripts/release/release-candidate.test.mjs b/scripts/release/release-candidate.test.mjs index 4ac979cdc3..62b9a796fa 100644 --- a/scripts/release/release-candidate.test.mjs +++ b/scripts/release/release-candidate.test.mjs @@ -4,8 +4,8 @@ import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; import test from 'node:test'; -import { verifyCandidate } from './release-candidate.mjs'; -import { releasePackages } from './release-config.mjs'; +import { compareCandidates, verifyCandidate } from './release-candidate.mjs'; +import { releasePackages, releaseToolchain } from './release-config.mjs'; test('verifies every byte and the fixed approval order', async () => { const root = await mkdtemp(path.join(tmpdir(), 'rxjs-candidate-test-')); @@ -28,7 +28,18 @@ test('verifies every byte and the fixed approval order', async () => { } await writeFile( path.join(root, 'release-manifest.json'), - JSON.stringify({ schemaVersion: 1, sourceCommit: 'a'.repeat(40), version: '9.0.0-beta.2', channel: 'next', packages }) + JSON.stringify({ + schemaVersion: 2, + sourceCommit: 'a'.repeat(40), + authorizingPullRequest: 123, + version: '9.0.0-beta.2', + channel: 'next', + toolchain: releaseToolchain, + build: { id: 'a', runner: 'ubuntu-24.04' }, + reproducible: false, + independentBuilds: [], + packages, + }) ); const ambientGitHubSha = process.env.GITHUB_SHA; process.env.GITHUB_SHA = 'b'.repeat(40); @@ -46,3 +57,59 @@ test('verifies every byte and the fixed approval order', async () => { await rm(root, { recursive: true, force: true }); } }); + +test('requires two byte-identical independent builds and rejects inventory drift', async () => { + const first = await mkdtemp(path.join(tmpdir(), 'rxjs-candidate-first-')); + const second = await mkdtemp(path.join(tmpdir(), 'rxjs-candidate-second-')); + const output = await mkdtemp(path.join(tmpdir(), 'rxjs-candidate-output-')); + try { + for (const [directory, id] of [ + [first, 'a'], + [second, 'b'], + ]) { + const packages = []; + for (const [index, { name }] of releasePackages.entries()) { + const filename = `package-${index}.tgz`; + const bytes = Buffer.from(`exact bytes ${name}`); + await writeFile(path.join(directory, filename), bytes); + packages.push({ + name, + version: '9.0.0-beta.2', + filename, + size: bytes.length, + sha256: createHash('sha256').update(bytes).digest('hex'), + sha512: createHash('sha512').update(bytes).digest('hex'), + integrity: `sha512-${createHash('sha512').update(bytes).digest('base64')}`, + contents: [], + }); + } + await writeFile( + path.join(directory, 'release-manifest.json'), + JSON.stringify({ + schemaVersion: 2, + sourceCommit: 'a'.repeat(40), + authorizingPullRequest: 123, + version: '9.0.0-beta.2', + channel: 'next', + toolchain: releaseToolchain, + build: { id, runner: 'ubuntu-24.04' }, + reproducible: false, + independentBuilds: [], + packages, + }) + ); + } + const manifest = await compareCandidates(first, second, output); + assert.equal(manifest.reproducible, true); + assert.deepEqual( + manifest.independentBuilds.map(({ id }) => id), + ['a', 'b'] + ); + await writeFile(path.join(second, 'package-0.tgz'), 'changed'); + await assert.rejects(() => compareCandidates(first, second, output), /size changed|SHA-256 changed|byte-identical/); + await writeFile(path.join(first, 'unexpected'), 'unexpected'); + await assert.rejects(() => verifyCandidate(first), /missing or additional files/); + } finally { + await Promise.all([first, second, output].map((directory) => rm(directory, { recursive: true, force: true }))); + } +}); diff --git a/scripts/release/release-config.mjs b/scripts/release/release-config.mjs index 08f4431db8..5344d58332 100644 --- a/scripts/release/release-config.mjs +++ b/scripts/release/release-config.mjs @@ -7,9 +7,17 @@ export const releasePackages = [ export const releaseBranch = 'master'; export const releasePullRequestBranch = 'release/rxjs-9'; +export const releaseOperatorLogin = 'benlesh'; export const firstReleaseVersion = '9.0.0-beta.0'; export const stagedPackagesVariable = 'NPM_STAGED_PACKAGES_URL'; export const npmWebOrigin = 'https://www.npmjs.com'; +export const releaseToolchain = Object.freeze({ + runner: 'ubuntu-24.04', + node: '24.12.0', + pnpm: '10.34.5', + npm: '11.18.0', + npmIntegrity: 'sha512-T67M4L5wNm0cZ7EBLErcEkY1SmzEW/WJ+SADBzsFUY1UdAPfFHXFQtZ6SEXiK0+vzXysCvAsepbMaBTwnrAD+w==', +}); export const versionedFiles = [ 'packages/observable-polyfill/src/index.ts', diff --git a/scripts/release/release-doctor.mjs b/scripts/release/release-doctor.mjs index d1f384855b..655a5186d9 100644 --- a/scripts/release/release-doctor.mjs +++ b/scripts/release/release-doctor.mjs @@ -3,11 +3,21 @@ import { readFile, readdir } from 'node:fs/promises'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { assertNpmWebUrl, releasePackages, stagedPackagesVariable } from './release-config.mjs'; +import { assertNpmWebUrl, releaseOperatorLogin, releasePackages, releaseToolchain, stagedPackagesVariable } from './release-config.mjs'; const root = fileURLToPath(new URL('../..', import.meta.url)); const strict = process.argv.includes('--strict'); const errors = []; +if (releaseOperatorLogin !== 'benlesh') errors.push('The sole release operator must remain benlesh unless D-057 is explicitly reopened.'); +if ( + releaseToolchain.runner !== 'ubuntu-24.04' || + releaseToolchain.node !== '24.12.0' || + releaseToolchain.pnpm !== '10.34.5' || + releaseToolchain.npm !== '11.18.0' || + !/^sha512-[A-Za-z0-9+/]+={0,2}$/.test(releaseToolchain.npmIntegrity) +) { + errors.push('The checked release toolchain or npm SHA-512 drifted.'); +} const workflowDirectory = path.join(root, '.github/workflows'); const workflowFiles = (await readdir(workflowDirectory)).filter((file) => /\.ya?ml$/.test(file)); @@ -29,23 +39,45 @@ for (const relativePath of [...workflowFiles.map((file) => `.github/workflows/${ } const stageWorkflow = await readFile(path.join(root, '.github/workflows/release-stage.yml'), 'utf8').catch(() => ''); +const qualificationWorkflow = await readFile(path.join(root, '.github/workflows/release-qualify.yml'), 'utf8').catch(() => ''); for (const requirement of [ 'id-token: write', + 'workflow_dispatch:', + 'qualification_run_id:', + 'manifest_sha512:', + "github.actor == 'benlesh'", + 'Verify typed manual authorization without npm authority', + 'needs: authorize', + 'authorize-stage.mjs', 'authorize-release-commit.mjs', 'stage-release.mjs publish', 'release-candidate.mjs verify', - 'runs-on: ubuntu-latest', + 'runs-on: ubuntu-24.04', ]) { if (!stageWorkflow.includes(requirement)) errors.push(`release-stage.yml is missing ${requirement}.`); } -const stagedNpm = /npm install --global npm@(\d+)\.(\d+)\.(\d+)/.exec(stageWorkflow); -if (!stagedNpm || Number(stagedNpm[1]) < 11 || (Number(stagedNpm[1]) === 11 && Number(stagedNpm[2]) < 15)) { - errors.push('release-stage.yml must pin an npm CLI version that supports staged publishing (11.15.0 or newer).'); +for (const requirement of [ + 'matrix: { build: [a, b] }', + 'compare-release-candidates.mjs', + 'Exact tarballs / package, type, import, and migration gates', + 'ubuntu-24.04', + "node-version: '24.12.0'", + 'generate-release-evidence.mjs', + 'osv-scanner-action@', + 'release-candidate.mjs manifest-digest', +]) { + if (!qualificationWorkflow.includes(requirement)) errors.push(`release-qualify.yml is missing ${requirement}.`); +} +if (!stageWorkflow.includes('install-pinned-npm.mjs')) { + errors.push('release-stage.yml must install the checked npm CLI through install-pinned-npm.mjs.'); } -if (!stageWorkflow.includes("node-version: '24'")) { - errors.push('release-stage.yml must use the supported Node 24 release environment.'); +if (!stageWorkflow.includes("node-version: '24.12.0'")) { + errors.push('release-stage.yml must use exact Node 24.12.0.'); } -if (stageWorkflow.includes('actions/cache') || stageWorkflow.includes('cache: pnpm')) { +if ( + `${stageWorkflow}\n${qualificationWorkflow}`.includes('actions/cache') || + `${stageWorkflow}\n${qualificationWorkflow}`.includes('cache: pnpm') +) { errors.push('The privileged release workflow must not restore dependency or build caches.'); } if (stageWorkflow.includes('registry-url:')) { @@ -74,16 +106,33 @@ for (const { directory, name } of releasePackages) { names.push(manifest.name); versions.add(manifest.version); if (manifest.name !== name) errors.push(`${directory}/package.json must identify ${name}.`); + if (manifest.repository?.url !== 'https://github.com/ReactiveX/rxjs.git') { + errors.push(`${directory}/package.json must use the exact case-sensitive ReactiveX repository URL.`); + } } if (versions.size !== 1) errors.push('The four release packages do not have one synchronized version.'); const runbook = await readFile(path.join(root, 'docs/RELEASE_PROCESS.md'), 'utf8').catch(() => ''); +const normalizedRunbook = runbook.replaceAll('`', ''); if (!/^# RxJS 9 secure release process\n\n## Basic steps\n/.test(runbook)) errors.push('The public runbook must begin with Basic steps.'); if (runbook.indexOf('## Security considerations') < runbook.indexOf('## Basic steps')) { errors.push('Security considerations must follow Basic steps.'); } -for (const role of ['Release maintainer does', 'Release maintainer sees', 'GitHub automation does', 'npm does']) { - if (!runbook.includes(`**${role}:**`)) errors.push(`The runbook is missing the ${role} scenario role.`); +for (const requiredText of [ + 'one maintainer', + 'zero approvals', + 'automatically creates or refreshes the release PR', + 'release-manifest.json SHA-512', + 'WebAuthn', +]) { + if (!normalizedRunbook.toLowerCase().includes(requiredText.toLowerCase())) errors.push(`The runbook is missing: ${requiredText}.`); +} +if ( + /@ReactiveX\/release-maintainers|add-reviewer|required code-owner|environment reviewer requirement/i.test( + `${runbook}\n${stageWorkflow}\n${qualificationWorkflow}` + ) +) { + errors.push('Release documentation or workflows still imply a second reviewer or release team.'); } for (const { name } of releasePackages) { if (!runbook.includes(`\`${name}\``)) errors.push(`The public runbook does not identify ${name}.`); @@ -115,6 +164,12 @@ if (strict) { .filter(Boolean); if (requiredChecks.length === 0) errors.push('RELEASE_REQUIRED_CHECKS must list the protected master checks.'); if (new Set(requiredChecks).size !== requiredChecks.length) errors.push('RELEASE_REQUIRED_CHECKS contains duplicate check names.'); + for (const requiredSignal of ['codeql', 'dependency', 'osv', 'migration evidence', 'package gates', 'wpt', 'release readiness']) { + if (!requiredChecks.some((check) => check.toLowerCase().includes(requiredSignal))) { + errors.push(`RELEASE_REQUIRED_CHECKS does not include the ${requiredSignal} gate.`); + } + } + await validateBranchRuleset(); await validateTagRuleset(); } @@ -157,3 +212,46 @@ async function validateTagRuleset() { errors.push(`Could not audit release tag ruleset ${rulesetId}: ${error.message}`); } } + +async function validateBranchRuleset() { + const rulesetId = process.env.RELEASE_BRANCH_RULESET_ID; + if (!rulesetId) { + errors.push('RELEASE_BRANCH_RULESET_ID is required to audit single-maintainer master protection.'); + return; + } + try { + const ruleset = await readRuleset(rulesetId); + if (ruleset.target !== 'branch' || ruleset.enforcement !== 'active') { + errors.push(`Ruleset ${rulesetId} must be an active branch ruleset.`); + } + if (!ruleset.conditions?.ref_name?.include?.includes('refs/heads/master')) { + errors.push(`Ruleset ${rulesetId} must include refs/heads/master.`); + } + const rules = new Map((ruleset.rules ?? []).map((rule) => [rule.type, rule])); + for (const requiredRule of ['deletion', 'non_fast_forward', 'pull_request', 'required_status_checks', 'required_signatures']) { + if (!rules.has(requiredRule)) errors.push(`Ruleset ${rulesetId} is missing the ${requiredRule} rule.`); + } + const pullRequest = rules.get('pull_request')?.parameters ?? {}; + if (pullRequest.required_approving_review_count !== 0) errors.push(`Ruleset ${rulesetId} must require zero approving reviews.`); + if (JSON.stringify(pullRequest.allowed_merge_methods) !== JSON.stringify(['squash'])) { + errors.push(`Ruleset ${rulesetId} must allow only squash merges.`); + } + } catch (error) { + errors.push(`Could not audit release branch ruleset ${rulesetId}: ${error.message}`); + } +} + +async function readRuleset(rulesetId) { + const repository = process.env.GITHUB_REPOSITORY; + const token = process.env.GH_TOKEN; + if (!repository || !token) throw new Error('GITHUB_REPOSITORY and GH_TOKEN are required.'); + const response = await fetch(`https://api.github.com/repos/${repository}/rulesets/${encodeURIComponent(rulesetId)}`, { + headers: { + accept: 'application/vnd.github+json', + authorization: `Bearer ${token}`, + 'x-github-api-version': '2022-11-28', + }, + }); + if (!response.ok) throw new Error(`GitHub returned HTTP ${response.status}.`); + return response.json(); +} diff --git a/scripts/release/release-policy.test.mjs b/scripts/release/release-policy.test.mjs index ff3fb776b2..6f648c5a2b 100644 --- a/scripts/release/release-policy.test.mjs +++ b/scripts/release/release-policy.test.mjs @@ -1,4 +1,5 @@ import assert from 'node:assert/strict'; +import fc from 'fast-check'; import test from 'node:test'; import { classifyConventionalCommit, selectRelease, validatePullRequestTitle } from './release-policy.mjs'; @@ -70,3 +71,18 @@ test('ignores the empty pull-request template breaking-change placeholder', () = 'breaking' ); }); + +test('selects beta versions monotonically for arbitrary counters and releasable titles', () => { + fc.assert( + fc.property( + fc.nat({ max: 1_000_000 }), + fc.constantFrom('fix(core): repair lifecycle', 'feat(core): add operator', 'feat(core)!: change contract'), + (beta, subject) => { + const result = selectRelease({ currentTag: `9.0.0-beta.${beta}`, commits: [commit(subject)] }); + assert.equal(result.version, `9.0.0-beta.${beta + 1}`); + assert.equal(result.channel, 'next'); + } + ), + { numRuns: 200 } + ); +}); diff --git a/scripts/release/stage-release.test.mjs b/scripts/release/stage-release.test.mjs index ef77ef7aaf..21446c61df 100644 --- a/scripts/release/stage-release.test.mjs +++ b/scripts/release/stage-release.test.mjs @@ -1,11 +1,13 @@ import assert from 'node:assert/strict'; import { createHash } from 'node:crypto'; +import fc from 'fast-check'; import { mkdtemp, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; import test from 'node:test'; import { parseStageOutput, renderStagingComment, verifyDownloadedStage } from './stage-release.mjs'; import { releasePackages } from './release-config.mjs'; +import { assertNpmWebUrl } from './release-config.mjs'; test('extracts supported stage IDs and validates returned npm links', () => { const stageId = '123e4567-e89b-42d3-a456-426614174000'; @@ -19,6 +21,18 @@ test('extracts supported stage IDs and validates returned npm links', () => { assert.throws(() => parseStageOutput('{"ok":true}'), /supported stage ID/); }); +test('parses arbitrary supported UUID stage output and never renders a foreign npm origin', () => { + fc.assert( + fc.property(fc.uuid(), fc.string({ maxLength: 100 }), (stageId, suffix) => { + const parsed = parseStageOutput(JSON.stringify({ stageId, url: `https://evil.example/${encodeURIComponent(suffix)}` })); + assert.equal(parsed.stageId, stageId); + assert.equal(parsed.url, undefined); + assert.throws(() => assertNpmWebUrl(`https://npmjs.com/${encodeURIComponent(suffix)}`), /exact https:\/\/www\.npmjs\.com/); + }), + { numRuns: 200 } + ); +}); + test('requires the downloaded npm stage to match the qualified bytes', async () => { const root = await mkdtemp(path.join(tmpdir(), 'rxjs-stage-download-')); try { diff --git a/scripts/release/validate-commit-message.mjs b/scripts/release/validate-commit-message.mjs new file mode 100644 index 0000000000..e04980fed6 --- /dev/null +++ b/scripts/release/validate-commit-message.mjs @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +import { readFile } from 'node:fs/promises'; +import { validatePullRequestTitle } from './release-policy.mjs'; + +const messagePath = process.argv[2]; +if (!messagePath) throw new Error('Usage: validate-commit-message.mjs '); +const [title] = (await readFile(messagePath, 'utf8')).split(/\r?\n/); +const result = validatePullRequestTitle(title.trim()); +process.stdout.write(`Validated ${result.type} Conventional Commit message (${result.level}).\n`); diff --git a/scripts/security/check-osv-exceptions.mjs b/scripts/security/check-osv-exceptions.mjs new file mode 100644 index 0000000000..05e376a2a1 --- /dev/null +++ b/scripts/security/check-osv-exceptions.mjs @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +const requiredWorkspace = 'apps/rxjs.dev'; +const requiredTracker = 'docs/security/LEGACY_DOCS_VULNERABILITIES.md'; + +export function parseOsvExceptions(source) { + return source + .split('[[IgnoredVulns]]') + .slice(1) + .map((block) => + Object.fromEntries( + [...block.matchAll(/^([A-Za-z]+)\s*=\s*(?:"([^"]*)"|(\d{4}-\d{2}-\d{2}))/gm)].map((match) => [match[1], match[2] ?? match[3]]) + ) + ); +} + +export function validateOsvExceptions(source, now = new Date()) { + const errors = []; + const seen = new Set(); + for (const [index, entry] of parseOsvExceptions(source).entries()) { + const label = entry.id ?? `entry ${index + 1}`; + if (!/^GHSA-[a-z0-9-]+$/i.test(entry.id ?? '')) errors.push(`${label} has no valid advisory ID.`); + if (seen.has(entry.id)) errors.push(`${label} is duplicated.`); + seen.add(entry.id); + const expiry = Date.parse(`${entry.ignoreUntil ?? ''}T00:00:00Z`); + const reviewed = /(?:^|;) reviewed=(\d{4}-\d{2}-\d{2})(?:;|$)/.exec(entry.reason ?? '')?.[1]; + const reviewedAt = Date.parse(`${reviewed ?? ''}T00:00:00Z`); + if (!Number.isFinite(expiry) || expiry < now.getTime()) errors.push(`${label} is expired or has no expiry.`); + if (!Number.isFinite(reviewedAt) || expiry - reviewedAt > 90 * 24 * 60 * 60_000) + errors.push(`${label} exceeds the 90-day exception limit.`); + if (!(entry.reason ?? '').includes(`workspace=${requiredWorkspace}`)) errors.push(`${label} has no affected workspace.`); + if (!(entry.reason ?? '').includes(`owner=benlesh`)) errors.push(`${label} has no owner.`); + if (!(entry.reason ?? '').includes(`tracking=${requiredTracker}`)) errors.push(`${label} has no tracking record.`); + if (!(entry.reason ?? '').includes('unreachable=')) errors.push(`${label} has no reachability justification.`); + } + if (seen.size === 0) errors.push('No reviewed OSV exceptions are recorded.'); + return errors; +} + +export function classifyAuditPaths(audit) { + const unreviewed = []; + const legacyDocs = []; + for (const advisory of Object.values(audit.advisories ?? {})) { + for (const finding of advisory.findings ?? []) { + for (const dependencyPath of finding.paths ?? []) { + const record = { id: advisory.github_advisory_id, package: advisory.module_name, version: finding.version, path: dependencyPath }; + (dependencyPath.startsWith('apps__rxjs.dev>') ? legacyDocs : unreviewed).push(record); + } + } + } + return { unreviewed, legacyDocs }; +} + +export function isCompleteAudit(audit) { + return Boolean( + audit && + typeof audit.advisories === 'object' && + audit.metadata && + Number.isSafeInteger(audit.metadata.totalDependencies) && + audit.metadata.totalDependencies > 0 + ); +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + const root = fileURLToPath(new URL('../..', import.meta.url)); + const source = await readFile(`${root}/osv-scanner.toml`, 'utf8'); + const errors = validateOsvExceptions(source); + const auditPath = process.argv[2]; + if (auditPath) { + const audit = JSON.parse(await readFile(auditPath, 'utf8')); + if (!isCompleteAudit(audit)) { + errors.push('The npm audit result is incomplete; vulnerability classification must fail closed.'); + } + const { unreviewed, legacyDocs } = classifyAuditPaths(audit); + if (unreviewed.length > 0) { + errors.push( + `Advisory paths reach release, build, or test tooling:\n${unreviewed + .map(({ id, package: name, version, path }) => ` ${id} ${name}@${version} via ${path}`) + .join('\n')}` + ); + } + process.stdout.write(`Classified ${legacyDocs.length} advisory paths as isolated legacy documentation tooling.\n`); + } + assert.deepEqual(errors, [], `OSV exception policy failed:\n- ${errors.join('\n- ')}`); + process.stdout.write(`Validated ${parseOsvExceptions(source).length} time-bounded OSV exceptions.\n`); +} diff --git a/scripts/security/check-osv-exceptions.test.mjs b/scripts/security/check-osv-exceptions.test.mjs new file mode 100644 index 0000000000..a8829c7dbf --- /dev/null +++ b/scripts/security/check-osv-exceptions.test.mjs @@ -0,0 +1,34 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { classifyAuditPaths, isCompleteAudit, validateOsvExceptions } from './check-osv-exceptions.mjs'; + +const valid = `[[IgnoredVulns]] +id = "GHSA-aaaa-bbbb-cccc" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=excluded from build, qualification, and publication" +`; + +test('requires owned, justified, tracked exceptions of at most 90 days', () => { + assert.deepEqual(validateOsvExceptions(valid, new Date('2026-08-02T00:00:00Z')), []); + assert.match(validateOsvExceptions(valid, new Date('2026-11-01T00:00:00Z')).join('\n'), /expired/); + assert.match(validateOsvExceptions(valid.replace('2026-10-31', '2027-10-31'), new Date('2026-08-02T00:00:00Z')).join('\n'), /90-day/); + assert.match(validateOsvExceptions(valid.replace('owner=benlesh; ', ''), new Date('2026-08-02T00:00:00Z')).join('\n'), /owner/); +}); + +test('separates the excluded docs app from every release-reachable path', () => { + const audit = { + advisories: { + one: { github_advisory_id: 'GHSA-one', module_name: 'a', findings: [{ version: '1', paths: ['apps__rxjs.dev>a'] }] }, + two: { github_advisory_id: 'GHSA-two', module_name: 'b', findings: [{ version: '2', paths: ['.>b'] }] }, + }, + }; + const result = classifyAuditPaths(audit); + assert.equal(result.legacyDocs.length, 1); + assert.equal(result.unreviewed.length, 1); +}); + +test('fails closed when npm audit did not return a complete dependency result', () => { + assert.equal(isCompleteAudit({ advisories: {}, metadata: { totalDependencies: 2237 } }), true); + assert.equal(isCompleteAudit({ error: 'registry unavailable' }), false); + assert.equal(isCompleteAudit({ advisories: {}, metadata: { totalDependencies: 0 } }), false); +}); diff --git a/scripts/security/generate-osv-baseline.mjs b/scripts/security/generate-osv-baseline.mjs new file mode 100644 index 0000000000..ece17f41d9 --- /dev/null +++ b/scripts/security/generate-osv-baseline.mjs @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +import { readFile, writeFile } from 'node:fs/promises'; +import { classifyAuditPaths } from './check-osv-exceptions.mjs'; + +const [osvPath, auditPath, outputPath = 'osv-scanner.toml'] = process.argv.slice(2); +if (!osvPath || !auditPath) throw new Error('Usage: generate-osv-baseline.mjs [output]'); +const osv = JSON.parse(await readFile(osvPath, 'utf8')); +const audit = JSON.parse(await readFile(auditPath, 'utf8')); +const { unreviewed, legacyDocs } = classifyAuditPaths(audit); +if (unreviewed.length > 0) throw new Error(`Refusing to baseline ${unreviewed.length} release-reachable advisory paths.`); +const docsPackages = new Set(legacyDocs.map(({ package: name, version }) => `${name}@${version}`)); +const ids = new Set(); +for (const result of osv.results ?? []) { + for (const entry of result.packages ?? []) { + const key = `${entry.package?.name}@${entry.package?.version}`; + for (const vulnerability of entry.vulnerabilities ?? []) { + // The OSV input may predate a remediation. Only the post-remediation, + // path-classified docs inventory is eligible for the generated baseline. + if (!docsPackages.has(key)) continue; + ids.add(vulnerability.id); + } + } +} +const reason = + 'workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication'; +const source = + '# Generated from the reviewed 2026-08-02 OSV/npm path audit. Do not hand-edit.\n' + + '# Regenerate only after scripts/security/check-osv-exceptions.mjs proves every path remains isolated.\n\n' + + [...ids] + .sort() + .map((id) => `[[IgnoredVulns]]\nid = "${id}"\nignoreUntil = 2026-10-31\nreason = "${reason}"\n`) + .join('\n'); +await writeFile(outputPath, source); +process.stdout.write(`Recorded ${ids.size} reviewed legacy-docs advisory IDs in ${outputPath}.\n`); From 9603804d8a06661c73cbe8ff0569f3370c9720ae Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Mon, 3 Aug 2026 14:29:18 -0500 Subject: [PATCH 4/5] fix(release): address review feedback --- .github/workflows/release-pr.yml | 4 ++-- package.json | 2 +- packages/test/src/types.ts | 3 ++- packages/test/test/types/usage.ts | 15 ++++++++++++++- scripts/release/finalize-release.mjs | 3 ++- scripts/release/release-config.mjs | 5 +++++ scripts/release/release-config.test.mjs | 11 +++++++++++ scripts/release/release-doctor.mjs | 6 ++++++ 8 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 scripts/release/release-config.test.mjs diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 7eb074f400..40710ebbd9 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -28,7 +28,7 @@ jobs: github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'master' && github.event.workflow_run.head_repository.full_name == github.repository) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Mint short-lived release App token id: app-token @@ -52,7 +52,7 @@ jobs: run_install: false - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: '24' + node-version: '24.12.0' package-manager-cache: false - name: Wait for every configured master check diff --git a/package.json b/package.json index ac706db9ba..5770cc3d6e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "analyze:bundles": "node scripts/analyze-bundles.mjs", "prepare-packages": "pnpm nx run-many -t build,lint,test:circular,dtslint,copy_common_package_files --exclude rxjs.dev", "release": "node scripts/release/release-doctor.mjs", - "release:check": "node --test scripts/analyze-bundles.test.mjs scripts/check-package-docs.test.mjs scripts/check-release-coherence.test.mjs scripts/finalize-esm-package.test.mjs scripts/prerelease-adoption-lib.test.mjs scripts/release/authorize-release-commit.test.mjs scripts/release/authorize-stage.test.mjs scripts/release/install-pinned-npm.test.mjs scripts/release/release-policy.test.mjs scripts/release/release-candidate.test.mjs scripts/release/stage-release.test.mjs scripts/security/check-osv-exceptions.test.mjs && node scripts/security/check-osv-exceptions.mjs && node scripts/check-package-docs.mjs && node scripts/check-release-coherence.mjs && node scripts/release/release-doctor.mjs", + "release:check": "node --test scripts/analyze-bundles.test.mjs scripts/check-package-docs.test.mjs scripts/check-release-coherence.test.mjs scripts/finalize-esm-package.test.mjs scripts/prerelease-adoption-lib.test.mjs scripts/release/authorize-release-commit.test.mjs scripts/release/authorize-stage.test.mjs scripts/release/install-pinned-npm.test.mjs scripts/release/release-config.test.mjs scripts/release/release-policy.test.mjs scripts/release/release-candidate.test.mjs scripts/release/stage-release.test.mjs scripts/security/check-osv-exceptions.test.mjs && node scripts/security/check-osv-exceptions.mjs && node scripts/check-package-docs.mjs && node scripts/check-release-coherence.mjs && node scripts/release/release-doctor.mjs", "test:bundle-analysis": "node --test scripts/analyze-bundles.test.mjs", "test:workflows": "prettier --check .github/workflows/*.yml .github/actions/install-dependencies/action.yml .github/dependabot.yml", "test:kernel": "pnpm --filter rxjs run test:kernel", diff --git a/packages/test/src/types.ts b/packages/test/src/types.ts index 27e99f2daf..b3ac0e51c0 100644 --- a/packages/test/src/types.ts +++ b/packages/test/src/types.ts @@ -86,7 +86,8 @@ export interface TestIdleOptions { export type TestNotification = MarbleNotification; /** An Observable notification and its absolute virtual timestamp. */ -export type TestMessage = MarbleMessage; +// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- Keep this public interface augmentable for downstream test adapters. +export interface TestMessage extends MarbleMessage {} /** * A producer or observer lifetime. Legacy field names are retained, but each diff --git a/packages/test/test/types/usage.ts b/packages/test/test/types/usage.ts index a8f6c00cff..2982474468 100644 --- a/packages/test/test/types/usage.ts +++ b/packages/test/test/types/usage.ts @@ -1,5 +1,11 @@ import '@rxjs/observable-polyfill'; -import { rxTest, type RxTestConfig, type TestPlatformObservable } from '@rxjs/test'; +import { rxTest, type RxTestConfig, type TestMessage, type TestPlatformObservable } from '@rxjs/test'; + +declare module '@rxjs/test' { + interface TestMessage { + readonly adapterMetadata?: { readonly source: string }; + } +} const config = { maxVirtualTime: '20s', @@ -13,4 +19,11 @@ const result: Promise = rxTest(({ observable, expectObservable }) => { expectObservable(source).toBe('12ms (a|)', { a: 1 }); }, config); +const augmentedMessage: TestMessage = { + frame: 0, + notification: { kind: 'N', value: 1 }, + adapterMetadata: { source: 'downstream-adapter' }, +}; + void result; +void augmentedMessage; diff --git a/scripts/release/finalize-release.mjs b/scripts/release/finalize-release.mjs index 85dd076c32..db26c41974 100644 --- a/scripts/release/finalize-release.mjs +++ b/scripts/release/finalize-release.mjs @@ -4,12 +4,13 @@ import { spawnSync } from 'node:child_process'; import { mkdtemp, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; +import { npmRegistryVersionUrl } from './release-config.mjs'; import { verifyCandidate } from './release-candidate.mjs'; const candidateRoot = path.resolve(process.argv[2]); const manifest = await verifyCandidate(candidateRoot); for (const entry of manifest.packages) { - const url = `https://registry.npmjs.org/${encodeURIComponent(entry.name)}/${encodeURIComponent(entry.version)}`; + const url = npmRegistryVersionUrl(entry.name, entry.version); const response = await fetch(url, { headers: { accept: 'application/json' } }); if (response.status === 404) { process.stdout.write(`${entry.name}@${entry.version} is not public yet.\n`); diff --git a/scripts/release/release-config.mjs b/scripts/release/release-config.mjs index 5344d58332..930c367392 100644 --- a/scripts/release/release-config.mjs +++ b/scripts/release/release-config.mjs @@ -39,6 +39,11 @@ export function channelForVersion(version) { return version.includes('-') ? 'next' : 'latest'; } +export function npmRegistryVersionUrl(packageName, version) { + const encodedName = encodeURIComponent(packageName).replace(/^%40/, '@'); + return `https://registry.npmjs.org/${encodedName}/${encodeURIComponent(version)}`; +} + export function assertNpmWebUrl(value, label = stagedPackagesVariable) { let url; try { diff --git a/scripts/release/release-config.test.mjs b/scripts/release/release-config.test.mjs new file mode 100644 index 0000000000..4a3c054894 --- /dev/null +++ b/scripts/release/release-config.test.mjs @@ -0,0 +1,11 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { npmRegistryVersionUrl } from './release-config.mjs'; + +test('builds npm registry version URLs for scoped and unscoped packages', () => { + assert.equal(npmRegistryVersionUrl('rxjs', '9.0.0-beta.0'), 'https://registry.npmjs.org/rxjs/9.0.0-beta.0'); + assert.equal( + npmRegistryVersionUrl('@rxjs/observable-polyfill', '9.0.0-beta.0'), + 'https://registry.npmjs.org/@rxjs%2Fobservable-polyfill/9.0.0-beta.0' + ); +}); diff --git a/scripts/release/release-doctor.mjs b/scripts/release/release-doctor.mjs index 655a5186d9..2d604df2d4 100644 --- a/scripts/release/release-doctor.mjs +++ b/scripts/release/release-doctor.mjs @@ -89,6 +89,12 @@ if (!stageScript.includes("['stage', 'download', stageId]")) { } const releasePullRequestWorkflow = await readFile(path.join(root, '.github/workflows/release-pr.yml'), 'utf8').catch(() => ''); +if (!releasePullRequestWorkflow.includes('runs-on: ubuntu-24.04')) { + errors.push('release-pr.yml must use the checked Ubuntu 24.04 runner.'); +} +if (!releasePullRequestWorkflow.includes("node-version: '24.12.0'")) { + errors.push('release-pr.yml must use exact Node 24.12.0.'); +} for (const trustCheck of [ "github.event.workflow_run.event == 'push'", "github.event.workflow_run.head_branch == 'master'", From 77236fbb7449353fe9bff3e74ad673f8c5c20434 Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Mon, 3 Aug 2026 17:36:11 -0500 Subject: [PATCH 5/5] fix(deps): patch brace-expansion advisory --- docs/rxjs-next/PROJECT_PLAN.md | 16 +- osv-scanner.toml | 383 +++++++++--------- package.json | 5 +- pnpm-lock.yaml | 33 +- scripts/security/check-osv-exceptions.mjs | 5 + .../security/check-osv-exceptions.test.mjs | 10 +- scripts/security/generate-osv-baseline.mjs | 8 +- 7 files changed, 242 insertions(+), 218 deletions(-) diff --git a/docs/rxjs-next/PROJECT_PLAN.md b/docs/rxjs-next/PROJECT_PLAN.md index 51efe55047..ae1e29c135 100644 --- a/docs/rxjs-next/PROJECT_PLAN.md +++ b/docs/rxjs-next/PROJECT_PLAN.md @@ -3578,8 +3578,8 @@ conformance implementation depends on a runnable harness. consumer verification documentation. Moved Scorecard into that contextual assurance document and accepted Code-Review `0`. - Upgraded or overrode every dependency path reachable from release, build, or - test tooling. The remaining 253 npm advisory paths are isolated to excluded - `apps/rxjs.dev`, represented by 176 reviewed OSV IDs expiring 2026-10-31, and + test tooling. The remaining 260 npm advisory paths are isolated to excluded + `apps/rxjs.dev`, represented by 177 reviewed OSV IDs expiring 2026-10-31, and guarded by a path-aware checker. Added bounded PR and scheduled extended fast-check properties for release controls and Observable lifecycle. - Local rehearsal produced two byte-identical four-package candidates, hydrated @@ -3591,3 +3591,15 @@ conformance implementation depends on a runnable harness. - P6.10 remains the sole `NEXT` item because WebAuthn, GitHub/npm rules and trusted-publisher configuration, live workflow evidence, and the sole-account disposable-package rehearsal are external and have not yet been verified. + +### 2026-08-03 — P6.10 dependency-advisory response + +- Responded to GHSA-rgw5-rvv9-x895 by overriding every affected + `brace-expansion` major in the workspace to its patched release: 1.1.18, + 2.1.4, and 5.0.9. The frozen lockfile contains no affected version. +- Re-ran OSV Scanner 2.3.8 and the npm path classifier. Four newly reported + advisory IDs were confined to excluded `apps/rxjs.dev`; three obsolete IDs + were removed. The baseline generator now canonicalizes linked GHSA aliases + so regeneration cannot restore duplicate, unused exceptions. The configured + root scan has no unreviewed findings or unused exceptions, while P6.10 + remains the sole `NEXT` item. diff --git a/osv-scanner.toml b/osv-scanner.toml index d8edd75503..8a976e93e9 100644 --- a/osv-scanner.toml +++ b/osv-scanner.toml @@ -1,882 +1,887 @@ -# Generated from the reviewed 2026-08-02 OSV/npm path audit. Do not hand-edit. +# Generated from the reviewed 2026-08-03 OSV/npm path audit. Do not hand-edit. # Regenerate only after scripts/security/check-osv-exceptions.mjs proves every path remains isolated. [[IgnoredVulns]] id = "GHSA-2328-f5f3-gj25" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-23hp-3jrh-7fpw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-248r-7h7q-cr24" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2cm2-m3w5-gp2f" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-2m8v-j782-fhvr" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2p49-hgcm-8545" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2p57-rm9w-gvfp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2pr8-phx7-x9h3" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2r2c-g63r-vccr" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-2v35-w6hq-6mfw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-34x7-hfp2-rc4v" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-35jh-r3h4-6jhm" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-37ch-88jc-xwx2" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-38r7-794h-5758" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-39pv-4j6c-2g6v" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-3h5v-q93c-6h6q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-3rfm-jhwj-7488" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-47x8-96vw-5wg6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-48r7-hpm6-gfxm" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4gmj-3p3h-gm8h" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4v9v-hfq4-rm2v" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4vj7-5mj6-jm8m" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4vvj-4cpr-p986" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4wf5-vphf-c2xc" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-4www-5p9h-95mh" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5375-pq7m-f5r2" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-554w-wpv2-vw27" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-55hx-c926-fr95" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-58c5-g7wp-6w37" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-58qx-3vcg-4xpx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-58w9-8g37-x9v5" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5c6j-r48x-rmvq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5gfm-wpxj-wjgq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5m6q-g25r-mvwx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5rrq-pxf6-6jx5" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-5v2h-r2cx-5xgj" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-64mm-vxmg-q3vj" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-65ch-62r8-g69g" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-66ff-xgx4-vchm" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-677m-j7p3-52f9" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-6785-pvv7-mvg7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-67mh-4wv8-2f99" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-685m-2w69-288q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-692r-grfm-v8x7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-6g55-p6wh-862q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-6hxr-mr5r-9836" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-6j2x-vhqr-qr7q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-6rw7-vpxm-498p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-72xf-g2v4-qvf3" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-75px-5xx7-5xc7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-76c9-3jph-rj3q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-76p7-773f-r4q5" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-76w7-j9cq-rx2j" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-776f-qx25-q3cc" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-78xj-cgh5-2h22" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-79cf-xcqc-c78w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-7fh5-64p2-3v2j" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-7p89-p6hx-q4fw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-7v5v-9h63-cj86" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-83g3-92jg-28cx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-869p-cjfg-cm3x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8cf7-32gw-wr33" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8fgc-7cc6-rx7x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8fr3-hfg3-gpgp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8gwj-8hxc-285w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8hg8-63c5-gwmx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8qq5-rm4j-mr97" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-8x88-c5mf-7j5w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-95qp-cmmw-mgqv" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-968p-4wvh-cqc8" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-96hv-2xvq-fx4p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-99f4-grh7-6pcq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-99p7-6v5w-7xg8" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9g8x-92q2-p28f" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9gqv-wp59-fq42" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9jgg-88mc-972h" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9ppj-qmqm-q256" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9qj6-qjgg-37qq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-9vg3-4rfj-wgcm" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" - -[[IgnoredVulns]] -id = "GHSA-9wv6-86v2-598j" -ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-c2qf-rxjj-qqgw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-c4cf-2hgv-2qv6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-c7qv-q95q-8v27" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-cchq-frgv-rjh5" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-cfm4-qjh2-4765" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-cm22-4g7w-348p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f23m-r3pf-42rh" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f38q-mgvj-vph7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f3m7-gqxr-g87x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f5vj-f2hx-8m93" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f5x3-32g6-xq36" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-f6ww-3ggp-fr8h" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-ff84-5f28-78qj" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-ffh4-j6h5-pg66" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-fx83-v9x8-x52w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-fxqj-rqcc-2cmp" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-g644-9gfx-q4q4" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-g954-5hwp-pp24" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-gf8q-jrpm-jvxq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-grj5-jjm8-h35p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-gv2q-mqqv-365m" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-gvwx-54wh-qm9j" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-h755-8qp9-cq85" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-hc6q-2mpp-qw7j" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-hhq3-ff78-jv3g" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-hjrf-2m68-5959" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-hw58-p9xv-2mjh" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-j759-j44w-7fr8" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-jc84-3g44-wf2q" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-jggg-4jg4-v7c6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jhpw-976m-542j" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" + +[[IgnoredVulns]] +id = "GHSA-jj27-h5hq-8x99" +ignoreUntil = 2026-10-31 +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-jrmj-c5cx-3cw6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-jvwf-75h9-cwgg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-m28w-2pqf-7qgj" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-m4wx-m65x-ghrr" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-m5q2-4fm3-vfqp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-m6fv-jmcg-4jfg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-mp7j-qc5w-4988" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-mpf8-4hx2-7cjg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-mwcw-c2x4-8c55" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-mx8g-39q3-5c79" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-p3vc-36g9-x9gr" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-p6mc-m468-83gw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-p8p7-x288-28g6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-pfrx-2q88-qq97" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-ppp5-5v6c-4jwp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-prjf-86w9-mfqv" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-pxg6-pf52-xh8x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-q3fm-4wcw-g57x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-q67f-28xg-22rw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-q6f4-qqrg-jv6x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-q6x5-8v7m-xcrf" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-q8mj-m7cp-5q26" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qcp4-v2jj-fjx8" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qffp-2rhf-9h96" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qj8w-gfj5-8c6v" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qvjj-29qf-hp7p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qw6h-vgh9-j6wx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qwcr-r2fm-qrc7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qwph-4952-7xr6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qx2v-qp2m-jg93" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-qxh6-94w6-9r5p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-r28c-9q8g-f849" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-r292-9mhp-454m" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" - -[[IgnoredVulns]] -id = "GHSA-r5fr-rjxr-66jc" -ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-r635-g3xr-vw7x" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-r6q2-hw4h-h46w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-r9pm-gxmw-wv6p" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rcm2-22f3-pqv3" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rgjc-h3x7-9mwg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rhx6-c78j-4q9w" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rp36-8xq3-r6c4" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rp65-9cf3-cjxr" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rrrm-qjm4-v8hf" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rv73-9c8w-jp4c" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-rv95-896h-c2vc" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-v27g-jcqj-v8rw" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-v37h-5mfm-c47c" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-v422-hmwv-36x6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-v4hv-rgfq-gp49" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-v6mx-mf47-r5wg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-vmf3-w455-68vh" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-vpq2-c234-7xj6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-vwrp-x96c-mhwq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-w5hq-g745-h8pq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-w5p7-h5w8-2hfq" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-w7fw-mjwx-w883" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-w8wr-v893-vjvp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-wcpc-wj8m-hjx6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-wh4c-j3r5-mjhp" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-wp5r-2gw5-m7q7" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-wr3j-pwj9-hqq6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-x4jg-mjrx-434g" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-x6wf-f3px-wcqx" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-x9g3-xrwr-cwfg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-xcpc-8h2w-3j85" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-xq3m-2v4x-88gg" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" [[IgnoredVulns]] id = "GHSA-xv26-6w52-cph6" ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" - -[[IgnoredVulns]] -id = "GHSA-xxjr-mmjv-4gpg" -ignoreUntil = 2026-10-31 -reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" +reason = "workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication" diff --git a/package.json b/package.json index 5770cc3d6e..d2025bfb83 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,9 @@ "ajv@6": "6.14.0", "ajv@8": "8.18.0", "axios": "1.18.0", - "brace-expansion@1": "1.1.17", - "brace-expansion@2": "2.1.3", + "brace-expansion@1": "1.1.18", + "brace-expansion@2": "2.1.4", + "brace-expansion@5": "5.0.9", "braces": "3.0.3", "cross-spawn": "7.0.6", "diff@4": "4.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ed52d486b..ec1d3f9a18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,9 @@ overrides: ajv@6: 6.14.0 ajv@8: 8.18.0 axios: 1.18.0 - brace-expansion@1: 1.1.17 - brace-expansion@2: 2.1.3 + brace-expansion@1: 1.1.18 + brace-expansion@2: 2.1.4 + brace-expansion@5: 5.0.9 braces: 3.0.3 cross-spawn: 7.0.6 diff@4: 4.0.4 @@ -3332,15 +3333,11 @@ packages: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} - brace-expansion@1.1.17: - resolution: {integrity: sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - brace-expansion@2.1.3: - resolution: {integrity: sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==} - - brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} - engines: {node: 20 || >=22} + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} brace-expansion@5.0.9: resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} @@ -13119,19 +13116,15 @@ snapshots: widest-line: 3.1.0 wrap-ansi: 7.0.0 - brace-expansion@1.1.17: + brace-expansion@1.1.18: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.3: + brace-expansion@2.1.4: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.8: - dependencies: - balanced-match: 4.0.3 - brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -17124,7 +17117,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimatch@10.2.6: dependencies: @@ -17132,11 +17125,11 @@ snapshots: minimatch@3.1.4: dependencies: - brace-expansion: 1.1.17 + brace-expansion: 1.1.18 minimatch@5.1.8: dependencies: - brace-expansion: 2.1.3 + brace-expansion: 2.1.4 minimatch@9.0.7: dependencies: @@ -17524,7 +17517,7 @@ snapshots: balanced-match: 4.0.3 base64-js: 1.5.1 bl: 4.1.0 - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 buffer: 5.7.1 bundle-name: 4.1.0 call-bind-apply-helpers: 1.0.2 diff --git a/scripts/security/check-osv-exceptions.mjs b/scripts/security/check-osv-exceptions.mjs index 05e376a2a1..43dbf181c8 100644 --- a/scripts/security/check-osv-exceptions.mjs +++ b/scripts/security/check-osv-exceptions.mjs @@ -55,6 +55,11 @@ export function classifyAuditPaths(audit) { return { unreviewed, legacyDocs }; } +export function canonicalGithubAdvisoryId(vulnerability) { + const githubIds = [vulnerability.id, ...(vulnerability.aliases ?? [])].filter((id) => /^GHSA-[a-z0-9-]+$/i.test(id)); + return githubIds.sort()[0] ?? vulnerability.id; +} + export function isCompleteAudit(audit) { return Boolean( audit && diff --git a/scripts/security/check-osv-exceptions.test.mjs b/scripts/security/check-osv-exceptions.test.mjs index a8829c7dbf..226fa26850 100644 --- a/scripts/security/check-osv-exceptions.test.mjs +++ b/scripts/security/check-osv-exceptions.test.mjs @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; import test from 'node:test'; -import { classifyAuditPaths, isCompleteAudit, validateOsvExceptions } from './check-osv-exceptions.mjs'; +import { canonicalGithubAdvisoryId, classifyAuditPaths, isCompleteAudit, validateOsvExceptions } from './check-osv-exceptions.mjs'; const valid = `[[IgnoredVulns]] id = "GHSA-aaaa-bbbb-cccc" @@ -27,6 +27,14 @@ test('separates the excluded docs app from every release-reachable path', () => assert.equal(result.unreviewed.length, 1); }); +test('uses one stable GitHub advisory ID for aliased OSV records', () => { + assert.equal( + canonicalGithubAdvisoryId({ id: 'GHSA-r5fr-rjxr-66jc', aliases: ['CVE-2026-4800', 'GHSA-35jh-r3h4-6jhm'] }), + 'GHSA-35jh-r3h4-6jhm' + ); + assert.equal(canonicalGithubAdvisoryId({ id: 'GHSA-jhpw-976m-542j', aliases: ['CVE-2026-0001'] }), 'GHSA-jhpw-976m-542j'); +}); + test('fails closed when npm audit did not return a complete dependency result', () => { assert.equal(isCompleteAudit({ advisories: {}, metadata: { totalDependencies: 2237 } }), true); assert.equal(isCompleteAudit({ error: 'registry unavailable' }), false); diff --git a/scripts/security/generate-osv-baseline.mjs b/scripts/security/generate-osv-baseline.mjs index ece17f41d9..68a67e1e92 100644 --- a/scripts/security/generate-osv-baseline.mjs +++ b/scripts/security/generate-osv-baseline.mjs @@ -1,7 +1,7 @@ #!/usr/bin/env node import { readFile, writeFile } from 'node:fs/promises'; -import { classifyAuditPaths } from './check-osv-exceptions.mjs'; +import { canonicalGithubAdvisoryId, classifyAuditPaths } from './check-osv-exceptions.mjs'; const [osvPath, auditPath, outputPath = 'osv-scanner.toml'] = process.argv.slice(2); if (!osvPath || !auditPath) throw new Error('Usage: generate-osv-baseline.mjs [output]'); @@ -18,14 +18,14 @@ for (const result of osv.results ?? []) { // The OSV input may predate a remediation. Only the post-remediation, // path-classified docs inventory is eligible for the generated baseline. if (!docsPackages.has(key)) continue; - ids.add(vulnerability.id); + ids.add(canonicalGithubAdvisoryId(vulnerability)); } } } const reason = - 'workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-02; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication'; + 'workspace=apps/rxjs.dev; owner=benlesh; tracking=docs/security/LEGACY_DOCS_VULNERABILITIES.md; reviewed=2026-08-03; unreachable=apps/rxjs.dev is excluded from RxJS 9 build, test, qualification, and publication'; const source = - '# Generated from the reviewed 2026-08-02 OSV/npm path audit. Do not hand-edit.\n' + + '# Generated from the reviewed 2026-08-03 OSV/npm path audit. Do not hand-edit.\n' + '# Regenerate only after scripts/security/check-osv-exceptions.mjs proves every path remains isolated.\n\n' + [...ids] .sort()