From 0034dbca76e092af6184e5df065eba6a82c257b5 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 14 Apr 2026 15:50:55 +0200 Subject: [PATCH 1/4] test(bun): Add bun integration test folder --- .github/workflows/build.yml | 30 ++ .../bun-integration-tests/.oxlintrc.json | 26 ++ dev-packages/bun-integration-tests/expect.ts | 87 +++++ .../bun-integration-tests/package.json | 28 ++ dev-packages/bun-integration-tests/runner.ts | 280 ++++++++++++++++ .../suites/basic/index.ts | 30 ++ .../suites/basic/test.ts | 54 ++++ .../bun-integration-tests/tsconfig.json | 11 + .../bun-integration-tests/vite.config.mts | 32 ++ package.json | 7 +- yarn.lock | 306 +----------------- 11 files changed, 590 insertions(+), 301 deletions(-) create mode 100644 dev-packages/bun-integration-tests/.oxlintrc.json create mode 100644 dev-packages/bun-integration-tests/expect.ts create mode 100644 dev-packages/bun-integration-tests/package.json create mode 100644 dev-packages/bun-integration-tests/runner.ts create mode 100644 dev-packages/bun-integration-tests/suites/basic/index.ts create mode 100644 dev-packages/bun-integration-tests/suites/basic/test.ts create mode 100644 dev-packages/bun-integration-tests/tsconfig.json create mode 100644 dev-packages/bun-integration-tests/vite.config.mts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6032cee30fdc..73000a40514a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -158,6 +158,9 @@ jobs: changed_bun: ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, '@sentry/bun') }} + changed_bun_integration: + ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, + '@sentry-internal/bun-integration-tests') }} changed_browser_integration: ${{ needs.job_get_metadata.outputs.changed_ci == 'true' || contains(steps.checkForAffected.outputs.affected, '@sentry-internal/browser-integration-tests') }} @@ -769,6 +772,32 @@ jobs: working-directory: dev-packages/cloudflare-integration-tests run: yarn test + job_bun_integration_tests: + name: Bun Integration Tests + needs: [job_get_metadata, job_build] + if: needs.job_build.outputs.changed_bun_integration == 'true' || github.event_name != 'pull_request' + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }}) + uses: actions/checkout@v6 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v6 + with: + node-version-file: 'package.json' + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + - name: Restore caches + uses: ./.github/actions/restore-cache + with: + dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }} + + - name: Run integration tests + working-directory: dev-packages/bun-integration-tests + run: yarn test + job_remix_integration_tests: name: Remix (Node ${{ matrix.node }}) Tests needs: [job_get_metadata, job_build] @@ -1109,6 +1138,7 @@ jobs: job_node_integration_tests, job_node_core_integration_tests, job_cloudflare_integration_tests, + job_bun_integration_tests, job_browser_playwright_tests, job_browser_loader_tests, job_remix_integration_tests, diff --git a/dev-packages/bun-integration-tests/.oxlintrc.json b/dev-packages/bun-integration-tests/.oxlintrc.json new file mode 100644 index 000000000000..dd67e1db9801 --- /dev/null +++ b/dev-packages/bun-integration-tests/.oxlintrc.json @@ -0,0 +1,26 @@ +{ + "$schema": "../../node_modules/oxlint/configuration_schema.json", + "extends": ["../.oxlintrc.json"], + "env": { + "node": true + }, + "overrides": [ + { + "files": ["suites/**/*.ts"], + "globals": { + "Bun": "readonly", + "fetch": "readonly" + }, + "rules": { + "typescript/ban-ts-comment": [ + "error", + { + "ts-ignore": "allow-with-description", + "ts-expect-error": true + } + ], + "import/first": "off" + } + } + ] +} diff --git a/dev-packages/bun-integration-tests/expect.ts b/dev-packages/bun-integration-tests/expect.ts new file mode 100644 index 000000000000..6fe7527e1eef --- /dev/null +++ b/dev-packages/bun-integration-tests/expect.ts @@ -0,0 +1,87 @@ +import type { Contexts, Envelope, Event, SdkInfo } from '@sentry/core'; +import { SDK_VERSION } from '@sentry/core'; +import { expect } from 'vitest'; + +export const UUID_MATCHER = expect.stringMatching(/^[\da-f]{32}$/); +export const UUID_V4_MATCHER = expect.stringMatching( + /^[\da-f]{8}-[\da-f]{4}-4[\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/, +); +export const SHORT_UUID_MATCHER = expect.stringMatching(/^[\da-f]{16}$/); +export const ISO_DATE_MATCHER = expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/); + +function dropUndefinedKeys>(obj: T): T { + for (const [key, value] of Object.entries(obj)) { + if (value === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete obj[key]; + } + } + return obj; +} + +function getSdk(sdk: 'bun' | 'hono'): SdkInfo { + return { + integrations: expect.any(Array), + name: `sentry.javascript.${sdk}`, + packages: [ + { + name: `npm:@sentry/${sdk}`, + version: SDK_VERSION, + }, + ...(sdk === 'hono' ? [{ name: 'npm:@sentry/bun', version: SDK_VERSION }] : []), + ], + version: SDK_VERSION, + }; +} + +function defaultContexts(eventContexts: Contexts = {}): Contexts { + return dropUndefinedKeys({ + app: { app_memory: expect.any(Number), app_start_time: expect.any(String), free_memory: expect.any(Number) }, + cloud_resource: expect.any(Object), + trace: { + trace_id: UUID_MATCHER, + span_id: SHORT_UUID_MATCHER, + }, + culture: { locale: expect.any(String), timezone: expect.any(String) }, + device: expect.any(Object), + os: expect.any(Object), + runtime: { name: 'bun', version: expect.any(String) }, + ...eventContexts, + }); +} + +export function expectedEvent(event: Event, { sdk }: { sdk: 'bun' | 'hono' }): Event { + return dropUndefinedKeys({ + event_id: UUID_MATCHER, + timestamp: expect.any(Number), + environment: 'production', + platform: 'node', + modules: expect.any(Object), + sdk: getSdk(sdk), + server_name: expect.any(String), + ...event, + contexts: defaultContexts(event.contexts), + }); +} + +export function eventEnvelope( + event: Event, + { includeSampleRand = false, sdk = 'bun' }: { includeSampleRand?: boolean; sdk?: 'bun' | 'hono' } = {}, +): Envelope { + return [ + { + event_id: UUID_MATCHER, + sent_at: ISO_DATE_MATCHER, + sdk: { name: `sentry.javascript.${sdk}`, version: SDK_VERSION }, + trace: { + environment: event.environment || 'production', + public_key: 'public', + trace_id: UUID_MATCHER, + sample_rate: expect.any(String), + ...(includeSampleRand && { sample_rand: expect.stringMatching(/^[01](\.\d+)?$/) }), + sampled: expect.any(String), + }, + }, + [[{ type: 'event' }, expectedEvent(event, { sdk })]], + ]; +} diff --git a/dev-packages/bun-integration-tests/package.json b/dev-packages/bun-integration-tests/package.json new file mode 100644 index 000000000000..c711045d1ce1 --- /dev/null +++ b/dev-packages/bun-integration-tests/package.json @@ -0,0 +1,28 @@ +{ + "name": "@sentry-internal/bun-integration-tests", + "version": "10.48.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "private": true, + "scripts": { + "lint": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint . --type-aware", + "lint:fix": "OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS=true oxlint . --fix --type-aware", + "test": "vitest run", + "test:watch": "yarn test --watch" + }, + "dependencies": { + "@sentry/bun": "10.48.0", + "@sentry/hono": "10.48.0", + "hono": "^4.12.12" + }, + "devDependencies": { + "@sentry-internal/test-utils": "10.48.0", + "bun-types": "^1.2.9", + "vitest": "^3.2.4" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/dev-packages/bun-integration-tests/runner.ts b/dev-packages/bun-integration-tests/runner.ts new file mode 100644 index 000000000000..b9831768f78a --- /dev/null +++ b/dev-packages/bun-integration-tests/runner.ts @@ -0,0 +1,280 @@ +import type { Envelope, EnvelopeItemType } from '@sentry/core'; +import { normalize } from '@sentry/core'; +import { createBasicSentryServer } from '@sentry-internal/test-utils'; +import { spawn } from 'child_process'; +import { existsSync } from 'fs'; +import { join } from 'path'; +import { inspect } from 'util'; +import { expect } from 'vitest'; + +const CLEANUP_STEPS = new Set<() => void>(); + +export function cleanupChildProcesses(): void { + for (const step of CLEANUP_STEPS) { + step(); + } + CLEANUP_STEPS.clear(); +} + +process.on('exit', cleanupChildProcesses); + +function deferredPromise( + done?: () => void, +): { resolve: (val: T) => void; reject: (reason?: unknown) => void; promise: Promise } { + let resolve; + let reject; + const promise = new Promise((res, rej) => { + resolve = (val: T) => { + res(val); + }; + reject = (reason: Error) => { + rej(reason); + }; + }); + if (!resolve || !reject) { + throw new Error('Failed to create deferred promise'); + } + return { + resolve, + reject, + promise: promise.finally(() => done?.()), + }; +} + +type Expected = Envelope | ((envelope: Envelope) => void); + +type StartResult = { + completed(): Promise; + makeRequest( + method: 'get' | 'post', + path: string, + options?: { headers?: Record; data?: BodyInit; expectError?: boolean }, + ): Promise; +}; + +/** Creates a test runner that spawns a Bun child process */ +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function createRunner(...paths: string[]) { + const testPath = join(...paths); + + let unordered = false; + + if (!existsSync(testPath)) { + throw new Error(`Test scenario not found: ${testPath}`); + } + + const expectedEnvelopes: Expected[] = []; + const ignored: Set = new Set(['session', 'sessions', 'client_report']); + const envVars: Record = {}; + + return { + withEnv: function (env: Record) { + Object.assign(envVars, env); + return this; + }, + expect: function (expected: Expected) { + expectedEnvelopes.push(expected); + return this; + }, + expectN: function (n: number, expected: Expected) { + for (let i = 0; i < n; i++) { + expectedEnvelopes.push(expected); + } + return this; + }, + unordered: function () { + unordered = true; + return this; + }, + ignore: function (...types: EnvelopeItemType[]) { + types.forEach(t => ignored.add(t)); + return this; + }, + unignore: function (...types: EnvelopeItemType[]) { + for (const t of types) { + ignored.delete(t); + } + return this; + }, + start: function (signal?: AbortSignal): StartResult { + const { resolve, reject, promise: isComplete } = deferredPromise(cleanupChildProcesses); + const expectedEnvelopeCount = expectedEnvelopes.length; + + let envelopeCount = 0; + const { resolve: setServerPort, promise: serverPortPromise } = deferredPromise(); + let child: ReturnType | undefined; + + function expectCallbackCalled(): void { + envelopeCount++; + if (envelopeCount === expectedEnvelopeCount) { + resolve(); + } + } + + function assertEnvelopeMatches(expected: Expected, envelope: Envelope): void { + if (typeof expected === 'function') { + expected(envelope); + } else { + expect(envelope).toEqual(expected); + } + } + + function newEnvelope(envelope: Envelope): void { + if (process.env.DEBUG) log('newEnvelope', inspect(envelope, false, null, true)); + + const envelopeItemType = envelope[1][0][0].type; + + if (ignored.has(envelopeItemType)) { + return; + } + + try { + if (unordered) { + const matchIndex = expectedEnvelopes.findIndex(candidate => { + try { + assertEnvelopeMatches(candidate, envelope); + return true; + } catch { + return false; + } + }); + + if (matchIndex < 0) { + return; + } + + expectedEnvelopes.splice(matchIndex, 1); + } else { + const expected = expectedEnvelopes.shift(); + + if (!expected) { + return; + } + + assertEnvelopeMatches(expected, envelope); + } + + expectCallbackCalled(); + } catch (e) { + reject(e); + } + } + + createBasicSentryServer(newEnvelope) + .then(([mockServerPort, mockServerClose]) => { + if (mockServerClose) { + CLEANUP_STEPS.add(() => { + mockServerClose(); + }); + } + + if (process.env.DEBUG) log('Starting scenario', testPath); + + const entryFile = join(testPath, 'index.ts'); + if (!existsSync(entryFile)) { + reject(new Error(`Entry file not found: ${entryFile}`)); + return; + } + + const stdio: ('inherit' | 'ipc' | 'ignore' | 'pipe')[] = process.env.DEBUG + ? ['inherit', 'inherit', 'inherit', 'ipc'] + : ['ignore', 'pipe', 'pipe', 'ipc']; + + child = spawn('bun', ['run', entryFile], { + stdio, + signal, + env: { + ...process.env, + SENTRY_DSN: `http://public@localhost:${mockServerPort}/1337`, + ...envVars, + }, + }); + + CLEANUP_STEPS.add(() => { + child?.kill(); + }); + + child.on('error', e => { + // eslint-disable-next-line no-console + console.error('Error starting Bun child process:', e); + reject(e); + }); + + if (!process.env.DEBUG && child.stderr) { + let stderrData = ''; + child.stderr.on('data', (chunk: Buffer) => { + stderrData += chunk.toString(); + }); + child.on('exit', code => { + if (code !== 0 && code !== null && stderrData) { + // eslint-disable-next-line no-console + console.error('Bun process stderr:', stderrData); + } + }); + } + + child.on('message', (message: string) => { + const msg = JSON.parse(message) as { event: string; port?: number }; + if (msg.event === 'READY' && typeof msg.port === 'number') { + if (process.env.DEBUG) log('Bun server ready on port', msg.port); + setServerPort(msg.port); + } + }); + }) + .catch(e => reject(e)); + + return { + completed: async function (): Promise { + return isComplete; + }, + makeRequest: async function ( + method: 'get' | 'post', + path: string, + options: { headers?: Record; data?: BodyInit; expectError?: boolean } = {}, + ): Promise { + const url = `http://localhost:${await serverPortPromise}${path}`; + const body = options.data; + const headers = options.headers || {}; + const expectError = options.expectError || false; + + if (process.env.DEBUG) log('making request', method, url, headers, body); + + try { + const res = await fetch(url, { headers, method, body }); + + if (!res.ok) { + if (!expectError) { + reject(new Error(`Expected request to "${path}" to succeed, but got a ${res.status} response`)); + } + + return; + } + + if (expectError) { + reject(new Error(`Expected request to "${path}" to fail, but got a ${res.status} response`)); + return; + } + + if (res.headers.get('content-type')?.includes('application/json')) { + return await res.json(); + } + + return (await res.text()) as T; + } catch (e) { + if (expectError) { + return; + } + + reject(e); + return; + } + }, + }; + }, + }; +} + +function log(...args: unknown[]): void { + // eslint-disable-next-line no-console + console.log(...args.map(arg => normalize(arg))); +} diff --git a/dev-packages/bun-integration-tests/suites/basic/index.ts b/dev-packages/bun-integration-tests/suites/basic/index.ts new file mode 100644 index 000000000000..681c0e88458e --- /dev/null +++ b/dev-packages/bun-integration-tests/suites/basic/index.ts @@ -0,0 +1,30 @@ +import * as Sentry from '@sentry/bun'; + +Sentry.init({ + dsn: process.env.SENTRY_DSN, + tracesSampleRate: 1.0, +}); + +const server = Bun.serve({ + port: 0, + fetch(request) { + const url = new URL(request.url); + + if (url.pathname === '/error') { + throw new Error('This is a test error from the Bun integration tests'); + } + + if (url.pathname === '/message') { + Sentry.captureMessage('Hello from Bun'); + return new Response('OK'); + } + + return new Response('Hello from Bun!'); + }, + error(error) { + Sentry.captureException(error); + return new Response('Internal Server Error', { status: 500 }); + }, +}); + +process.send?.(JSON.stringify({ event: 'READY', port: server.port })); diff --git a/dev-packages/bun-integration-tests/suites/basic/test.ts b/dev-packages/bun-integration-tests/suites/basic/test.ts new file mode 100644 index 000000000000..673464f0c81a --- /dev/null +++ b/dev-packages/bun-integration-tests/suites/basic/test.ts @@ -0,0 +1,54 @@ +import { expect, it } from 'vitest'; +import { eventEnvelope } from '../../expect'; +import { createRunner } from '../../runner'; + +it('captures an error thrown in Bun.serve fetch handler', async ({ signal }) => { + const runner = createRunner(__dirname) + .expect( + eventEnvelope( + { + level: 'error', + exception: { + values: [ + { + type: 'Error', + value: 'This is a test error from the Bun integration tests', + stacktrace: { + frames: expect.any(Array), + }, + mechanism: { type: 'auto.http.bun.serve', handled: false }, + }, + ], + }, + request: expect.objectContaining({ + method: 'GET', + url: expect.stringContaining('/error'), + }), + }, + { includeSampleRand: true }, + ), + ) + .ignore('transaction') + .start(signal); + await runner.makeRequest('get', '/error', { expectError: true }); + await runner.completed(); +}); + +it('captures a manually sent message', async ({ signal }) => { + const runner = createRunner(__dirname) + .expect(envelope => { + const [, envelopeItems] = envelope; + const [itemHeader, itemPayload] = envelopeItems[0]; + + expect(itemHeader.type).toBe('event'); + + expect(itemPayload).toMatchObject({ + level: 'info', + message: 'Hello from Bun', + }); + }) + .ignore('transaction') + .start(signal); + await runner.makeRequest('get', '/message'); + await runner.completed(); +}); diff --git a/dev-packages/bun-integration-tests/tsconfig.json b/dev-packages/bun-integration-tests/tsconfig.json new file mode 100644 index 000000000000..8fe804d8c50d --- /dev/null +++ b/dev-packages/bun-integration-tests/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + + "include": ["suites/**/*.ts", "*.ts"], + + "compilerOptions": { + "lib": ["ES2020"], + "esModuleInterop": true, + "types": ["bun-types"] + } +} diff --git a/dev-packages/bun-integration-tests/vite.config.mts b/dev-packages/bun-integration-tests/vite.config.mts new file mode 100644 index 000000000000..23ea00e8c30a --- /dev/null +++ b/dev-packages/bun-integration-tests/vite.config.mts @@ -0,0 +1,32 @@ +import { defineConfig } from 'vitest/config'; +import baseConfig from '../../vite/vite.config'; + +export default defineConfig({ + ...baseConfig, + test: { + ...baseConfig.test, + coverage: { + enabled: false, + }, + isolate: false, + include: ['./suites/**/test.ts'], + testTimeout: 20_000, + ...(process.env.DEBUG + ? { + disableConsoleIntercept: true, + silent: false, + } + : {}), + pool: 'threads', + poolOptions: { + threads: { + singleThread: true, + }, + }, + reporters: process.env.DEBUG + ? ['default', { summary: false }] + : process.env.GITHUB_ACTIONS + ? ['dot', 'github-actions'] + : ['verbose'], + }, +}); diff --git a/package.json b/package.json index f07218aaf7a3..3d211ca42067 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,11 @@ "dedupe-deps:check": "yarn-deduplicate yarn.lock --list --fail", "dedupe-deps:fix": "yarn-deduplicate yarn.lock", "postpublish": "nx run-many -t postpublish --parallel=1", - "test": "nx run-many -t test --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test": "nx run-many -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:scripts": "vitest run scripts/bump-version.test.ts", - "test:unit": "nx run-many -t test:unit --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test:unit": "nx run-many -t test:unit --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:update-snapshots": "nx run-many -t test:update-snapshots", - "test:pr": "nx affected -t test --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", + "test:pr": "nx affected -t test --exclude \"@sentry-internal/{browser-integration-tests,bun-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"", "test:pr:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts --affected", "test:pr:node": "UNIT_TEST_ENV=node ts-node ./scripts/ci-unit-tests.ts --affected", "test:ci:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts", @@ -98,6 +98,7 @@ "dev-packages/bundle-analyzer-scenarios", "dev-packages/e2e-tests", "dev-packages/node-integration-tests", + "dev-packages/bun-integration-tests", "dev-packages/cloudflare-integration-tests", "dev-packages/node-core-integration-tests", "dev-packages/test-utils", diff --git a/yarn.lock b/yarn.lock index 7c65cb69ae99..a718a01b0bf2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,25 +2,6 @@ # yarn lockfile v1 -"@actions/artifact@5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@actions/artifact/-/artifact-5.0.3.tgz#e3ca31d98a5836c23d4c5b829429b5aa6f71f0ff" - integrity sha512-FIEG8Kum0wABZnktJvFi1xuVPc31xrunhZwLCvjrCGISQOm0ifyo7cjqf6PHiEeqoWMa5HIGOsB+lGM4aKCseA== - dependencies: - "@actions/core" "^2.0.0" - "@actions/github" "^6.0.1" - "@actions/http-client" "^3.0.2" - "@azure/storage-blob" "^12.29.1" - "@octokit/core" "^5.2.1" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-retry" "^3.0.9" - "@octokit/request" "^8.4.1" - "@octokit/request-error" "^5.1.1" - "@protobuf-ts/plugin" "^2.2.3-alpha.1" - archiver "^7.0.1" - jwt-decode "^3.1.2" - unzip-stream "^0.3.1" - "@actions/artifact@^6.1.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@actions/artifact/-/artifact-6.1.0.tgz#6d30eb1837b1f047dce2ebe364aa60a7881f202d" @@ -49,14 +30,6 @@ "@actions/http-client" "^2.0.1" uuid "^8.3.2" -"@actions/core@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-2.0.3.tgz#b05e8cf407ab393e5d10282357a74e1ee2315eee" - integrity sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA== - dependencies: - "@actions/exec" "^2.0.0" - "@actions/http-client" "^3.0.2" - "@actions/core@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@actions/core/-/core-3.0.0.tgz#89cb07c119e9b46a649ad5f355e77de9b3108cf8" @@ -72,13 +45,6 @@ dependencies: "@actions/io" "^1.0.1" -"@actions/exec@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-2.0.0.tgz#35e829723389f80e362ec2cc415697ec74362ad8" - integrity sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw== - dependencies: - "@actions/io" "^2.0.0" - "@actions/exec@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-3.0.0.tgz#8c3464d20f0aa4068707757021d7e3c01a7ee203" @@ -96,19 +62,6 @@ "@octokit/plugin-paginate-rest" "^2.17.0" "@octokit/plugin-rest-endpoint-methods" "^5.13.0" -"@actions/github@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@actions/github/-/github-6.0.1.tgz#76e5f96df062c90635a7181ef45ff1c4ac21306e" - integrity sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw== - dependencies: - "@actions/http-client" "^2.2.0" - "@octokit/core" "^5.0.1" - "@octokit/plugin-paginate-rest" "^9.2.2" - "@octokit/plugin-rest-endpoint-methods" "^10.4.0" - "@octokit/request" "^8.4.1" - "@octokit/request-error" "^5.1.1" - undici "^5.28.5" - "@actions/github@^9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@actions/github/-/github-9.0.0.tgz#c86dae4128b2a6987271e2663bee9e766464840a" @@ -130,7 +83,7 @@ "@actions/core" "^3.0.0" minimatch "^3.0.4" -"@actions/http-client@^2.0.1", "@actions/http-client@^2.2.0": +"@actions/http-client@^2.0.1": version "2.2.3" resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674" integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA== @@ -159,11 +112,6 @@ resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== -"@actions/io@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@actions/io/-/io-2.0.0.tgz#3ad1271ba3cd515324f2215e8d4c1c0c3864d65b" - integrity sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg== - "@actions/io@^3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@actions/io/-/io-3.0.2.tgz#6f89b27a159d109836d983efa283997c23b92284" @@ -578,11 +526,6 @@ resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== -"@assemblyscript/loader@^0.19.21": - version "0.19.23" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.19.23.tgz#7fccae28d0a2692869f1d1219d36093bc24d5e72" - integrity sha512-ulkCYfFbYj01ie1MDOyxv2F6SpRN1TOj7fQxbP07D6HmeR+gr2JLSmINKjga2emB+b1L2KGrFKBTc+e00p54nw== - "@astrojs/compiler@^2.3.0": version "2.12.2" resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-2.12.2.tgz#5913b6ec7efffebdfb37fae9a50122802ae08c64" @@ -1581,7 +1524,7 @@ jsonwebtoken "^9.0.0" uuid "^8.3.0" -"@azure/storage-blob@^12.29.1", "@azure/storage-blob@^12.30.0": +"@azure/storage-blob@^12.30.0": version "12.31.0" resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.31.0.tgz#97b09be2bf6ab59739b862edd8124798362ce720" integrity sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg== @@ -3097,11 +3040,6 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - "@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" @@ -5340,13 +5278,6 @@ semver "^7.5.3" tar "^7.4.0" -"@minimistjs/subarg@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@minimistjs/subarg/-/subarg-1.0.0.tgz#484fdfebda9dc32087d7c7999ec6350684fb42d2" - integrity sha512-Q/ONBiM2zNeYUy0mVSO44mWWKYM3UHuEK43PKIOzJCbvUnPoMH1K+gk3cf1kgnCVJFlWmddahQQCmrmBGlk9jQ== - dependencies: - minimist "^1.1.0" - "@mjackson/node-fetch-server@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@mjackson/node-fetch-server/-/node-fetch-server-0.2.0.tgz#577c0c25d8aae9f69a97738b7b0d03d1471cdc49" @@ -5919,11 +5850,6 @@ dependencies: "@octokit/types" "^6.0.3" -"@octokit/auth-token@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" - integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== - "@octokit/auth-token@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-6.0.0.tgz#b02e9c08a2d8937df09a2a981f226ad219174c53" @@ -5942,19 +5868,6 @@ before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/core@^5.0.1", "@octokit/core@^5.2.1": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.2.2.tgz#252805732de9b4e8e4f658d34b80c4c9b2534761" - integrity sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg== - dependencies: - "@octokit/auth-token" "^4.0.0" - "@octokit/graphql" "^7.1.0" - "@octokit/request" "^8.4.1" - "@octokit/request-error" "^5.1.1" - "@octokit/types" "^13.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - "@octokit/core@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@octokit/core/-/core-7.0.6.tgz#0d58704391c6b681dec1117240ea4d2a98ac3916" @@ -5985,14 +5898,6 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.6.tgz#114d912108fe692d8b139cfe7fc0846dfd11b6c0" - integrity sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw== - dependencies: - "@octokit/types" "^13.1.0" - universal-user-agent "^6.0.0" - "@octokit/graphql@^4.5.8": version "4.8.0" resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" @@ -6002,15 +5907,6 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/graphql@^7.1.0": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.1.1.tgz#79d9f3d0c96a8fd13d64186fe5c33606d48b79cc" - integrity sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g== - dependencies: - "@octokit/request" "^8.4.1" - "@octokit/types" "^13.0.0" - universal-user-agent "^6.0.0" - "@octokit/graphql@^9.0.3": version "9.0.3" resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-9.0.3.tgz#5b8341c225909e924b466705c13477face869456" @@ -6025,16 +5921,6 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== -"@octokit/openapi-types@^20.0.0": - version "20.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" - integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== - -"@octokit/openapi-types@^24.2.0": - version "24.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-24.2.0.tgz#3d55c32eac0d38da1a7083a9c3b0cca77924f7d3" - integrity sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== - "@octokit/openapi-types@^27.0.0": version "27.0.0" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-27.0.0.tgz#374ea53781965fd02a9d36cacb97e152cefff12d" @@ -6054,30 +5940,11 @@ dependencies: "@octokit/types" "^6.40.0" -"@octokit/plugin-paginate-rest@^9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz#c516bc498736bcdaa9095b9a1d10d9d0501ae831" - integrity sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ== - dependencies: - "@octokit/types" "^12.6.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - "@octokit/plugin-request-log@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz#de1c1e557df6c08adb631bf78264fa741e01b317" integrity sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q== -"@octokit/plugin-rest-endpoint-methods@^10.4.0": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz#41ba478a558b9f554793075b2e20cd2ef973be17" - integrity sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg== - dependencies: - "@octokit/types" "^12.6.0" - "@octokit/plugin-rest-endpoint-methods@^17.0.0": version "17.0.0" resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz#8c54397d3a4060356a1c8a974191ebf945924105" @@ -6093,14 +5960,6 @@ "@octokit/types" "^6.39.0" deprecation "^2.3.1" -"@octokit/plugin-retry@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz#ae625cca1e42b0253049102acd71c1d5134788fe" - integrity sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ== - dependencies: - "@octokit/types" "^6.0.3" - bottleneck "^2.15.3" - "@octokit/plugin-retry@^8.0.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-8.1.0.tgz#e25c2fb5e0a09cfe674ef9df75d7ca4fafa16c11" @@ -6119,15 +5978,6 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request-error@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.1.1.tgz#b9218f9c1166e68bb4d0c89b638edc62c9334805" - integrity sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g== - dependencies: - "@octokit/types" "^13.1.0" - deprecation "^2.0.0" - once "^1.4.0" - "@octokit/request-error@^7.0.2", "@octokit/request-error@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-7.1.0.tgz#440fa3cae310466889778f5a222b47a580743638" @@ -6158,30 +6008,6 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/request@^8.4.1": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.4.1.tgz#715a015ccf993087977ea4365c44791fc4572486" - integrity sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw== - dependencies: - "@octokit/endpoint" "^9.0.6" - "@octokit/request-error" "^5.1.1" - "@octokit/types" "^13.1.0" - universal-user-agent "^6.0.0" - -"@octokit/types@^12.6.0": - version "12.6.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.6.0.tgz#8100fb9eeedfe083aae66473bd97b15b62aedcb2" - integrity sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw== - dependencies: - "@octokit/openapi-types" "^20.0.0" - -"@octokit/types@^13.0.0", "@octokit/types@^13.1.0": - version "13.10.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.10.0.tgz#3e7c6b19c0236c270656e4ea666148c2b51fd1a3" - integrity sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== - dependencies: - "@octokit/openapi-types" "^24.2.0" - "@octokit/types@^16.0.0": version "16.0.0" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-16.0.0.tgz#fbd7fa590c2ef22af881b1d79758bfaa234dbb7c" @@ -11789,35 +11615,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -autocannon@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/autocannon/-/autocannon-8.0.0.tgz#72b3ade6ec63dca0dc3be157c873d0a27e3f3745" - integrity sha512-fMMcWc2JPFcUaqHeR6+PbmEpTxCrPZyBUM95oG4w3ngJ8NfBNas/ZXA+pTHXLqJ0UlFVTcy05GC25WxKx/M20A== - dependencies: - "@minimistjs/subarg" "^1.0.0" - chalk "^4.1.0" - char-spinner "^1.0.1" - cli-table3 "^0.6.0" - color-support "^1.1.1" - cross-argv "^2.0.0" - form-data "^4.0.0" - has-async-hooks "^1.0.0" - hdr-histogram-js "^3.0.0" - hdr-histogram-percentiles-obj "^3.0.0" - http-parser-js "^0.5.2" - hyperid "^3.0.0" - lodash.chunk "^4.2.0" - lodash.clonedeep "^4.5.0" - lodash.flatten "^4.4.0" - manage-path "^2.0.0" - on-net-listen "^1.1.1" - pretty-bytes "^5.4.1" - progress "^2.0.3" - reinterval "^1.1.0" - retimer "^3.0.0" - semver "^7.3.2" - timestring "^6.0.0" - autoprefixer@^10.4.13, autoprefixer@^10.4.19, autoprefixer@^10.4.21, autoprefixer@^10.4.8: version "10.4.24" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.24.tgz#2c29595f3abd820a79976a609d0bf40eecf212fb" @@ -12972,7 +12769,7 @@ buffer-more-ints@~1.0.0: resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz#ef4f8e2dddbad429ed3828a9c55d44f05c611422" integrity sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg== -buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -13323,11 +13120,6 @@ chalk@^5.0.0, chalk@^5.2.0, chalk@^5.3.0: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -char-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" - integrity sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g== - character-entities-html4@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" @@ -13518,15 +13310,6 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0, cli-spinners@^2.9.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== -cli-table3@^0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" - integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - cli-table@^0.3.1: version "0.3.6" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" @@ -13656,7 +13439,7 @@ color-string@^1.6.0, color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.1, color-support@^1.1.3: +color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -14150,11 +13933,6 @@ croner@^9.1.0: resolved "https://registry.yarnpkg.com/croner/-/croner-9.1.0.tgz#94ccbba2570bca329f60f36ec19875dccf9a63aa" integrity sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g== -cross-argv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cross-argv/-/cross-argv-2.0.0.tgz#2e7907ba3246f82c967623a3e8525925bbd6c0ad" - integrity sha512-YIaY9TR5Nxeb8SMdtrU8asWVM4jqJDNDYlKV21LxtYcfNJhp1kEsgSa6qXwXgzN0WQWGODps0+TlGp2xQSHwOg== - cross-inspect@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.1.tgz#15f6f65e4ca963cf4cc1a2b5fef18f6ca328712b" @@ -18597,11 +18375,6 @@ has-ansi@^3.0.0: dependencies: ansi-regex "^3.0.0" -has-async-hooks@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-async-hooks/-/has-async-hooks-1.0.0.tgz#3df965ade8cd2d9dbfdacfbca3e0a5152baaf204" - integrity sha512-YF0VPGjkxr7AyyQQNykX8zK4PvtEDsUJAPqwu06UFz1lb6EvI53sPh5H1kWxg8NXI5LsfRCZ8uX9NkYDZBb/mw== - has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -18813,15 +18586,6 @@ hdr-histogram-js@^2.0.1: base64-js "^1.2.0" pako "^1.0.3" -hdr-histogram-js@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-3.0.1.tgz#b281e90d6ca80ee656bc378dafa39d7239b90855" - integrity sha512-l3GSdZL1Jr1C0kyb461tUjEdrRPZr8Qry7jByltf5JGrA0xvqOSrxRBfcrJqqV/AMEtqqhHhC6w8HW0gn76tRQ== - dependencies: - "@assemblyscript/loader" "^0.19.21" - base64-js "^1.2.0" - pako "^1.0.3" - hdr-histogram-percentiles-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" @@ -19073,7 +18837,7 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.5.1, http-parser-js@^0.5.2: +http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== @@ -19192,15 +18956,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -hyperid@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/hyperid/-/hyperid-3.3.0.tgz#2042bb296b7f1d5ba0797a5705469af0899c8556" - integrity sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ== - dependencies: - buffer "^5.2.1" - uuid "^8.3.2" - uuid-parse "^1.1.0" - iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" @@ -20575,11 +20330,6 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -jwt-decode@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" - integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== - jwt-decode@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" @@ -21001,11 +20751,6 @@ lodash.camelcase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -21041,11 +20786,6 @@ lodash.flatten@^3.0.2: lodash._baseflatten "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" @@ -21440,11 +21180,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -manage-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/manage-path/-/manage-path-2.0.0.tgz#f4cf8457b926eeee2a83b173501414bc76eb9597" - integrity sha512-NJhyB+PJYTpxhxZJ3lecIGgh4kwIY2RAh44XvAz9UlqthlQwtPBf62uBVR8XaD8CRuSjQ6TnZH2lNJkbLPZM2A== - map-age-cleaner@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -22264,7 +21999,7 @@ minimist@^0.2.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.4.tgz#0085d5501e29033748a2f2a4da0180142697a475" integrity sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ== -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -23681,11 +23416,6 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -on-net-listen@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/on-net-listen/-/on-net-listen-1.1.2.tgz#671e55a81c910fa7e5b1e4d506545e9ea0f2e11c" - integrity sha512-y1HRYy8s/RlcBvDUwKXSmkODMdx4KSuIvloCnQYJ2LdBBC1asY4HtfhXwe3UWknLakATZDnbzht2Ijw3M1EqFg== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -25414,7 +25144,7 @@ prettier@^3.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173" integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: +pretty-bytes@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== @@ -26348,11 +26078,6 @@ rehype@^12.0.1: rehype-stringify "^9.0.0" unified "^10.0.0" -reinterval@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reinterval/-/reinterval-1.1.0.tgz#3361ecfa3ca6c18283380dd0bb9546f390f5ece7" - integrity sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ== - relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -26676,11 +26401,6 @@ retext@^8.1.0: retext-stringify "^3.0.0" unified "^10.0.0" -retimer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" - integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== - retry-request@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" @@ -29000,11 +28720,6 @@ tildify@2.0.0: resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== -timestring@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/timestring/-/timestring-6.0.0.tgz#b0c7c331981ecf2066ce88bcfb8ee3ae32e7a0f6" - integrity sha512-wMctrWD2HZZLuIlchlkE2dfXJh7J2KDI9Dwl+2abPYg0mswQHfOAyQW3jJg1pY5VfttSINZuKcXoB3FGypVklA== - tiny-glob@0.2.9, tiny-glob@^0.2.9: version "0.2.9" resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" @@ -29672,7 +29387,7 @@ undici@7.18.2: resolved "https://registry.yarnpkg.com/undici/-/undici-7.18.2.tgz#6cf724ef799a67d94fd55adf66b1e184176efcdf" integrity sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw== -undici@^5.25.4, undici@^5.28.5: +undici@^5.25.4: version "5.29.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== @@ -30183,11 +29898,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid-parse@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/uuid-parse/-/uuid-parse-1.1.0.tgz#7061c5a1384ae0e1f943c538094597e1b5f3a65b" - integrity sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A== - uuid-v4@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/uuid-v4/-/uuid-v4-0.1.0.tgz#62d7b310406f6cecfea1528c69f1e8e0bcec5a3a" From 1172f32b228ca6095d01dbd7694c50838b37b3eb Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:28:34 +0200 Subject: [PATCH 2/4] remove manual captureException --- dev-packages/bun-integration-tests/suites/basic/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dev-packages/bun-integration-tests/suites/basic/index.ts b/dev-packages/bun-integration-tests/suites/basic/index.ts index 681c0e88458e..c760e61d6ba5 100644 --- a/dev-packages/bun-integration-tests/suites/basic/index.ts +++ b/dev-packages/bun-integration-tests/suites/basic/index.ts @@ -21,8 +21,7 @@ const server = Bun.serve({ return new Response('Hello from Bun!'); }, - error(error) { - Sentry.captureException(error); + error(_err) { return new Response('Internal Server Error', { status: 500 }); }, }); From 81ea690811b7078d8e22f9388fee92a721b4f3d0 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Wed, 15 Apr 2026 10:02:26 +0200 Subject: [PATCH 3/4] add release test --- dev-packages/bun-integration-tests/expect.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-packages/bun-integration-tests/expect.ts b/dev-packages/bun-integration-tests/expect.ts index 6fe7527e1eef..876e84a855fc 100644 --- a/dev-packages/bun-integration-tests/expect.ts +++ b/dev-packages/bun-integration-tests/expect.ts @@ -78,8 +78,9 @@ export function eventEnvelope( public_key: 'public', trace_id: UUID_MATCHER, sample_rate: expect.any(String), - ...(includeSampleRand && { sample_rand: expect.stringMatching(/^[01](\.\d+)?$/) }), sampled: expect.any(String), + ...(event.release !== undefined && { release: expect.any(String) }), + ...(includeSampleRand && { sample_rand: expect.stringMatching(/^[01](\.\d+)?$/) }), }, }, [[{ type: 'event' }, expectedEvent(event, { sdk })]], From e4be7f3c92271edfaaea5dd57af904845318e9cf Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Wed, 15 Apr 2026 10:45:00 +0200 Subject: [PATCH 4/4] only check for release on github ci --- dev-packages/bun-integration-tests/expect.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dev-packages/bun-integration-tests/expect.ts b/dev-packages/bun-integration-tests/expect.ts index 876e84a855fc..599caaa9e5be 100644 --- a/dev-packages/bun-integration-tests/expect.ts +++ b/dev-packages/bun-integration-tests/expect.ts @@ -59,6 +59,8 @@ export function expectedEvent(event: Event, { sdk }: { sdk: 'bun' | 'hono' }): E modules: expect.any(Object), sdk: getSdk(sdk), server_name: expect.any(String), + // release is auto-detected from GitHub CI env vars, so only expect it if we know it will be there + ...(process.env.GITHUB_SHA ? { release: expect.any(String) } : {}), ...event, contexts: defaultContexts(event.contexts), }); @@ -79,7 +81,8 @@ export function eventEnvelope( trace_id: UUID_MATCHER, sample_rate: expect.any(String), sampled: expect.any(String), - ...(event.release !== undefined && { release: expect.any(String) }), + // release is auto-detected from GitHub CI env vars, so only expect it if we know it will be there + ...(process.env.GITHUB_SHA ? { release: expect.any(String) } : {}), ...(includeSampleRand && { sample_rand: expect.stringMatching(/^[01](\.\d+)?$/) }), }, },