diff --git a/.github/workflows/create-issue-for-unreferenced-prs.yml b/.github/workflows/create-issue-for-unreferenced-prs.yml
index 725a2f8244b0..a0eee060f282 100644
--- a/.github/workflows/create-issue-for-unreferenced-prs.yml
+++ b/.github/workflows/create-issue-for-unreferenced-prs.yml
@@ -19,6 +19,11 @@ concurrency:
jobs:
check_for_issue_reference:
runs-on: ubuntu-latest
+ if: |
+ !contains(github.event.pull_request.labels.*.name, 'Dev: Gitflow')
+ && !startsWith(github.event.pull_request.head.ref, 'external-contributor/')
+ && !startsWith(github.event.pull_request.head.ref, 'prepare-release/')
+ && !startsWith(github.event.pull_request.head.ref, 'dependabot/')
steps:
- name: Check PR Body and Title for Issue Reference
uses: actions/github-script@v8
diff --git a/.github/workflows/gitflow-merge-conflict.yml b/.github/workflows/gitflow-merge-conflict.yml
index c2ad1f42ad1d..8b31d07afd6a 100644
--- a/.github/workflows/gitflow-merge-conflict.yml
+++ b/.github/workflows/gitflow-merge-conflict.yml
@@ -19,6 +19,7 @@ jobs:
uses: actions/github-script@v8
with:
script: |
+ const initialDelay = 60_000; // Wait 1 minute before first check to let CI start
const retryInterval = 30_000;
const maxRetries = 10; // (30 seconds * 10 retries) = 5 minutes
@@ -39,6 +40,10 @@ jobs:
let attempt = 0;
let mergeable = null;
+ // Wait before first check to give CI time to start
+ console.log(`Waiting ${initialDelay/1000} seconds before first check to let CI start...`);
+ await sleep(initialDelay);
+
while (attempt < maxRetries) {
attempt++;
console.log(`Attempt ${attempt}/${maxRetries}: Checking if PR is mergeable...`);
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9f745ef5afe5..15972e85dfdd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,30 @@
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
+## 10.29.0
+
+### Important Changes
+
+- **feat(solid|solidstart): Bump accepted @solidjs/router range ([#18395](https://github.com/getsentry/sentry-javascript/pull/18395))**
+
+We expanded the supported version range for `@solidjs/router` to include `0.14.x` and `0.15.x` versions.
+
+### Other Changes
+
+- fix(logs): Add support for `msg` in pino integration ([#18389](https://github.com/getsentry/sentry-javascript/pull/18389))
+- fix(node): Include system message in anthropic-ai messages span ([#18332](https://github.com/getsentry/sentry-javascript/pull/18332))
+- fix(tracing): Add missing attributes in vercel-ai spans ([#18333](https://github.com/getsentry/sentry-javascript/pull/18333))
+
+
+ Internal Changes
+
+- chore(tanstackstart-react): clean up re-exported types ([#18393](https://github.com/getsentry/sentry-javascript/pull/18393))
+- ref(core): Avoid looking up openai integration options ([#17695](https://github.com/getsentry/sentry-javascript/pull/17695))
+- test(nuxt): Relax captured unhandled error assertion ([#18397](https://github.com/getsentry/sentry-javascript/pull/18397))
+- test(tanstackstart-react): Set up E2E test application ([#18358](https://github.com/getsentry/sentry-javascript/pull/18358))
+
+
+
## 10.28.0
### Important Changes
diff --git a/dev-packages/browser-integration-tests/utils/replayHelpers.ts b/dev-packages/browser-integration-tests/utils/replayHelpers.ts
index 72e98cb3e9d1..36af7740047e 100644
--- a/dev-packages/browser-integration-tests/utils/replayHelpers.ts
+++ b/dev-packages/browser-integration-tests/utils/replayHelpers.ts
@@ -115,7 +115,6 @@ export function collectReplayRequests(
const replayEvents: ReplayEvent[] = [];
const replayRecordingSnapshots: RecordingSnapshot[] = [];
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
const promise = page.waitForResponse(res => {
const req = res.request();
diff --git a/dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/package.json b/dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/package.json
index bf0b59ca0adf..d714373b3837 100644
--- a/dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/package.json
+++ b/dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/package.json
@@ -24,14 +24,14 @@
"isbot": "^5.1.22",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "react-router": "^7.6.0",
- "react-router-dom": "^7.6.0"
+ "react-router": "7.9.6",
+ "react-router-dom": "7.9.6"
},
"devDependencies": {
"@graphql-codegen/cli": "5.0.2",
"@playwright/test": "~1.53.2",
- "@react-router/dev": "7.6.0",
- "@react-router/fs-routes": "7.6.0",
+ "@react-router/dev": "7.9.6",
+ "@react-router/fs-routes": "7.9.6",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@shopify/cli": "3.80.4",
"@shopify/hydrogen-codegen": "^0.3.3",
diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/tests/middleware.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-3/tests/middleware.test.ts
index e9debf8496c2..7cb3c84e9050 100644
--- a/dev-packages/e2e-tests/test-applications/nuxt-3/tests/middleware.test.ts
+++ b/dev-packages/e2e-tests/test-applications/nuxt-3/tests/middleware.test.ts
@@ -121,7 +121,11 @@ test.describe('Server Middleware Instrumentation', () => {
type: 'Error',
mechanism: expect.objectContaining({
handled: false,
- type: 'auto.middleware.nuxt',
+ // Type changes depending on whether it is being wrapped by Nitro or not
+ // This is a timing problem, sometimes Nitro can capture the error first, and sometimes it can't
+ // If nitro captures the error first, the type will be 'chained'
+ // If Sentry captures the error first, the type will be 'auto.middleware.nuxt'
+ type: expect.stringMatching(/^(auto\.middleware\.nuxt|chained)$/),
}),
}),
);
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-node-20-18/package.json b/dev-packages/e2e-tests/test-applications/react-router-7-framework-node-20-18/package.json
index 14c507288dc8..bb211d225f0a 100644
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-node-20-18/package.json
+++ b/dev-packages/e2e-tests/test-applications/react-router-7-framework-node-20-18/package.json
@@ -6,9 +6,9 @@
"dependencies": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-router": "^7.1.5",
- "@react-router/node": "^7.1.5",
- "@react-router/serve": "^7.1.5",
+ "react-router": "7.9.6",
+ "@react-router/node": "7.9.6",
+ "@react-router/serve": "7.9.6",
"@sentry/react-router": "latest || *",
"isbot": "^5.1.17"
},
@@ -16,7 +16,7 @@
"@types/react": "18.3.1",
"@types/react-dom": "18.3.1",
"@types/node": "^20",
- "@react-router/dev": "^7.1.5",
+ "@react-router/dev": "7.9.6",
"@playwright/test": "~1.53.2",
"@sentry-internal/test-utils": "link:../../../test-utils",
"typescript": "^5.6.3",
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json
index e48333090c1c..04c460363320 100644
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json
+++ b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json
@@ -18,16 +18,16 @@
},
"dependencies": {
"@sentry/react-router": "latest || *",
- "@react-router/node": "^7.5.3",
- "@react-router/serve": "^7.5.3",
+ "@react-router/node": "7.9.6",
+ "@react-router/serve": "7.9.6",
"isbot": "^5.1.27",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-router": "^7.1.5"
+ "react-router": "7.9.6"
},
"devDependencies": {
"@playwright/test": "~1.53.2",
- "@react-router/dev": "^7.5.3",
+ "@react-router/dev": "7.9.6",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@tailwindcss/vite": "^4.1.4",
"@types/node": "^20",
diff --git a/dev-packages/e2e-tests/test-applications/solidstart-dynamic-import/package.json b/dev-packages/e2e-tests/test-applications/solidstart-dynamic-import/package.json
index fc1d87a63c71..3c896501e487 100644
--- a/dev-packages/e2e-tests/test-applications/solidstart-dynamic-import/package.json
+++ b/dev-packages/e2e-tests/test-applications/solidstart-dynamic-import/package.json
@@ -18,7 +18,7 @@
"@playwright/test": "~1.53.2",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@solidjs/meta": "^0.29.4",
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.0.2",
"@solidjs/testing-library": "^0.8.7",
"@testing-library/jest-dom": "^6.4.2",
diff --git a/dev-packages/e2e-tests/test-applications/solidstart-spa/package.json b/dev-packages/e2e-tests/test-applications/solidstart-spa/package.json
index e3fb382d2387..f1638f71866b 100644
--- a/dev-packages/e2e-tests/test-applications/solidstart-spa/package.json
+++ b/dev-packages/e2e-tests/test-applications/solidstart-spa/package.json
@@ -18,7 +18,7 @@
"@playwright/test": "~1.53.2",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@solidjs/meta": "^0.29.4",
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.0.2",
"@solidjs/testing-library": "^0.8.7",
"@testing-library/jest-dom": "^6.4.2",
diff --git a/dev-packages/e2e-tests/test-applications/solidstart-top-level-import/package.json b/dev-packages/e2e-tests/test-applications/solidstart-top-level-import/package.json
index 8612cd64bfaf..a5dc0d9dc5c9 100644
--- a/dev-packages/e2e-tests/test-applications/solidstart-top-level-import/package.json
+++ b/dev-packages/e2e-tests/test-applications/solidstart-top-level-import/package.json
@@ -18,7 +18,7 @@
"@playwright/test": "~1.53.2",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@solidjs/meta": "^0.29.4",
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.0.2",
"@solidjs/testing-library": "^0.8.7",
"@testing-library/jest-dom": "^6.4.2",
diff --git a/dev-packages/e2e-tests/test-applications/solidstart/package.json b/dev-packages/e2e-tests/test-applications/solidstart/package.json
index e1d0f8b97017..3b5a2d2b51c8 100644
--- a/dev-packages/e2e-tests/test-applications/solidstart/package.json
+++ b/dev-packages/e2e-tests/test-applications/solidstart/package.json
@@ -18,7 +18,7 @@
"@playwright/test": "~1.53.2",
"@sentry-internal/test-utils": "link:../../../test-utils",
"@solidjs/meta": "^0.29.4",
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.0.2",
"@solidjs/testing-library": "^0.8.7",
"@testing-library/jest-dom": "^6.4.2",
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/.gitignore b/dev-packages/e2e-tests/test-applications/tanstackstart-react/.gitignore
new file mode 100644
index 000000000000..a547bf36d8d1
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/.npmrc b/dev-packages/e2e-tests/test-applications/tanstackstart-react/.npmrc
new file mode 100644
index 000000000000..070f80f05092
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/.npmrc
@@ -0,0 +1,2 @@
+@sentry:registry=http://127.0.0.1:4873
+@sentry-internal:registry=http://127.0.0.1:4873
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/instrument.server.mjs b/dev-packages/e2e-tests/test-applications/tanstackstart-react/instrument.server.mjs
new file mode 100644
index 000000000000..8bc20de7578b
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/instrument.server.mjs
@@ -0,0 +1,12 @@
+import * as Sentry from '@sentry/tanstackstart-react';
+
+Sentry.init({
+ environment: 'qa', // dynamic sampling bias to keep transactions
+ dsn: process.env.E2E_TEST_DSN,
+ tunnel: `http://localhost:3031/`, // proxy server
+ tracesSampleRate: 1,
+ transportOptions: {
+ // We expect the app to send a lot of events in a short time
+ bufferSize: 1000,
+ },
+});
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/package.json b/dev-packages/e2e-tests/test-applications/tanstackstart-react/package.json
new file mode 100644
index 000000000000..e44229cce78f
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "tanstackstart-react",
+ "private": true,
+ "version": "0.0.1",
+ "type": "module",
+ "scripts": {
+ "build": "vite build && cp instrument.server.mjs .output/server",
+ "start": "node --import ./.output/server/instrument.server.mjs .output/server/index.mjs",
+ "test": "playwright test",
+ "clean": "npx rimraf node_modules pnpm-lock.yaml",
+ "test:build": "pnpm install && pnpm build",
+ "test:assert": "pnpm test"
+ },
+ "dependencies": {
+ "@sentry/tanstackstart-react": "latest || *",
+ "@tanstack/react-start": "^1.139.12",
+ "@tanstack/react-router": "^1.139.12",
+ "react": "^19.2.0",
+ "react-dom": "^19.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^19.2.0",
+ "@types/react-dom": "^19.2.0",
+ "@types/node": "^24.10.0",
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
+ "@typescript-eslint/parser": "^7.2.0",
+ "@vitejs/plugin-react-swc": "^3.5.0",
+ "typescript": "^5.9.0",
+ "vite": "7.2.0",
+ "vite-tsconfig-paths": "^5.1.4",
+ "nitro": "^3.0.0",
+ "@playwright/test": "~1.53.2",
+ "@sentry-internal/test-utils": "link:../../../test-utils"
+ },
+ "volta": {
+ "extends": "../../package.json"
+ }
+}
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/playwright.config.mjs b/dev-packages/e2e-tests/test-applications/tanstackstart-react/playwright.config.mjs
new file mode 100644
index 000000000000..4ca3c24e7fda
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/playwright.config.mjs
@@ -0,0 +1,8 @@
+import { getPlaywrightConfig } from '@sentry-internal/test-utils';
+
+const config = getPlaywrightConfig({
+ startCommand: `pnpm start`,
+ port: 3000,
+});
+
+export default config;
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/router.tsx b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/router.tsx
new file mode 100644
index 000000000000..b1c6f7727a26
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/router.tsx
@@ -0,0 +1,25 @@
+import * as Sentry from '@sentry/tanstackstart-react';
+import { createRouter } from '@tanstack/react-router';
+import { routeTree } from './routeTree.gen';
+
+export const getRouter = () => {
+ const router = createRouter({
+ routeTree,
+ scrollRestoration: true,
+ });
+
+ if (!router.isServer) {
+ Sentry.init({
+ environment: 'qa', // dynamic sampling bias to keep transactions
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+ integrations: [Sentry.tanstackRouterBrowserTracingIntegration(router)],
+ // We recommend adjusting this value in production, or using tracesSampler
+ // for finer control
+ tracesSampleRate: 1.0,
+ release: 'e2e-test',
+ tunnel: 'http://localhost:3031/', // proxy server
+ });
+ }
+
+ return router;
+};
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/__root.tsx b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/__root.tsx
new file mode 100644
index 000000000000..0a268a350e34
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/__root.tsx
@@ -0,0 +1,42 @@
+import type { ReactNode } from 'react';
+import { Outlet, createRootRoute, HeadContent, Scripts } from '@tanstack/react-router';
+
+export const Route = createRootRoute({
+ head: () => ({
+ meta: [
+ {
+ charSet: 'utf-8',
+ },
+ {
+ name: 'viewport',
+ content: 'width=device-width, initial-scale=1',
+ },
+ {
+ title: 'TanStack Start Starter',
+ },
+ ],
+ }),
+ component: RootComponent,
+});
+
+function RootComponent() {
+ return (
+
+
+
+ );
+}
+
+function RootDocument({ children }: Readonly<{ children: ReactNode }>) {
+ return (
+
+
+
+
+
+ {children}
+
+
+
+ );
+}
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/api.error.ts b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/api.error.ts
new file mode 100644
index 000000000000..470d53346ad7
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/api.error.ts
@@ -0,0 +1,17 @@
+import * as Sentry from '@sentry/tanstackstart-react';
+import { createFileRoute } from '@tanstack/react-router';
+
+export const Route = createFileRoute('/api/error')({
+ server: {
+ handlers: {
+ GET: async () => {
+ try {
+ throw new Error('Sentry API Route Test Error');
+ } catch (error) {
+ Sentry.captureException(error);
+ throw error;
+ }
+ },
+ },
+ },
+});
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/index.tsx b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/index.tsx
new file mode 100644
index 000000000000..a92fabf20c4a
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/src/routes/index.tsx
@@ -0,0 +1,41 @@
+import { createFileRoute } from '@tanstack/react-router';
+import { createServerFn } from '@tanstack/react-start';
+
+const throwServerError = createServerFn().handler(async () => {
+ throw new Error('Sentry Server Function Test Error');
+});
+
+export const Route = createFileRoute('/')({
+ component: Home,
+});
+
+function Home() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/start-event-proxy.mjs b/dev-packages/e2e-tests/test-applications/tanstackstart-react/start-event-proxy.mjs
new file mode 100644
index 000000000000..a3f8045010bd
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/start-event-proxy.mjs
@@ -0,0 +1,6 @@
+import { startEventProxyServer } from '@sentry-internal/test-utils';
+
+startEventProxyServer({
+ port: 3031,
+ proxyServerName: 'tanstackstart-react',
+});
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/tests/errors.test.ts b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tests/errors.test.ts
new file mode 100644
index 000000000000..f5d25febb7a4
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tests/errors.test.ts
@@ -0,0 +1,92 @@
+import { expect, test } from '@playwright/test';
+import { waitForError } from '@sentry-internal/test-utils';
+
+test('Sends client-side error to Sentry with auto-instrumentation', async ({ page }) => {
+ const errorEventPromise = waitForError('tanstackstart-react', errorEvent => {
+ return errorEvent?.exception?.values?.[0]?.value === 'Sentry Client Test Error';
+ });
+
+ await page.goto(`/`);
+
+ await expect(page.locator('button').filter({ hasText: 'Break the client' })).toBeVisible();
+
+ await page.locator('button').filter({ hasText: 'Break the client' }).click();
+
+ const errorEvent = await errorEventPromise;
+
+ expect(errorEvent).toMatchObject({
+ exception: {
+ values: [
+ {
+ type: 'Error',
+ value: 'Sentry Client Test Error',
+ mechanism: {
+ handled: false,
+ },
+ },
+ ],
+ },
+ });
+
+ expect(errorEvent.transaction).toBe('/');
+});
+
+test('Sends server-side function error to Sentry with auto-instrumentation', async ({ page }) => {
+ const errorEventPromise = waitForError('tanstackstart-react', errorEvent => {
+ return errorEvent?.exception?.values?.[0]?.value === 'Sentry Server Function Test Error';
+ });
+
+ await page.goto(`/`);
+
+ await expect(page.locator('button').filter({ hasText: 'Break server function' })).toBeVisible();
+
+ await page.locator('button').filter({ hasText: 'Break server function' }).click();
+
+ const errorEvent = await errorEventPromise;
+
+ expect(errorEvent).toMatchObject({
+ exception: {
+ values: [
+ {
+ type: 'Error',
+ value: 'Sentry Server Function Test Error',
+ mechanism: {
+ handled: false,
+ },
+ },
+ ],
+ },
+ });
+
+ expect(errorEvent.transaction).toBe('/');
+});
+
+test('Sends API route error to Sentry if manually instrumented', async ({ page }) => {
+ const errorEventPromise = waitForError('tanstackstart-react', errorEvent => {
+ return errorEvent?.exception?.values?.[0]?.value === 'Sentry API Route Test Error';
+ });
+
+ await page.goto(`/`);
+
+ await expect(page.locator('button').filter({ hasText: 'Break API route' })).toBeVisible();
+
+ await page.locator('button').filter({ hasText: 'Break API route' }).click();
+
+ const errorEvent = await errorEventPromise;
+
+ expect(errorEvent).toMatchObject({
+ exception: {
+ values: [
+ {
+ type: 'Error',
+ value: 'Sentry API Route Test Error',
+ mechanism: {
+ handled: true,
+ },
+ },
+ ],
+ },
+ });
+
+ expect(errorEvent.transaction).toBe('GET /api/error');
+});
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.json b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.json
new file mode 100644
index 000000000000..5dcdb1fa6f4a
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "useDefineForClassFields": true,
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "strictNullChecks": true
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.node.json b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.node.json
new file mode 100644
index 000000000000..97ede7ee6f2d
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/tsconfig.node.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/dev-packages/e2e-tests/test-applications/tanstackstart-react/vite.config.ts b/dev-packages/e2e-tests/test-applications/tanstackstart-react/vite.config.ts
new file mode 100644
index 000000000000..4df9fbb14208
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/tanstackstart-react/vite.config.ts
@@ -0,0 +1,18 @@
+import { defineConfig } from 'vite';
+import tsConfigPaths from 'vite-tsconfig-paths';
+import { tanstackStart } from '@tanstack/react-start/plugin/vite';
+import viteReact from '@vitejs/plugin-react-swc';
+import { nitro } from 'nitro/vite';
+
+export default defineConfig({
+ server: {
+ port: 3000,
+ },
+ plugins: [
+ tsConfigPaths(),
+ tanstackStart(),
+ nitro(),
+ // react's vite plugin must come after start's vite plugin
+ viteReact(),
+ ],
+});
diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/server.js b/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/server.js
index 81cc0fc8829c..1c7443517d2c 100644
--- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/server.js
+++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/server.js
@@ -24,7 +24,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
index 42121915d601..a16f454cb54c 100644
--- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
+++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
@@ -23,7 +23,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
index 6c7042813246..a756fe917fbf 100644
--- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
+++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
@@ -24,7 +24,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
index a0ffeb98867a..86c65f0bc7f8 100644
--- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
+++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
@@ -24,7 +24,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler-with-otel-http-instrumentation/server.js b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler-with-otel-http-instrumentation/server.js
index a4595dd8f3c8..14b66e727c65 100644
--- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler-with-otel-http-instrumentation/server.js
+++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler-with-otel-http-instrumentation/server.js
@@ -30,7 +30,6 @@ app.get('/check', (req, res) => {
Sentry.startSpan({ name: 'check-endpoint' }, async () => {
const appPort = getPortAppIsRunningOn(app);
try {
- // eslint-disable-next-line no-undef
const response = await fetch(`http://localhost:${appPort}/bounce`);
const bounceRes = await response.json();
// eslint-disable-next-line no-console
diff --git a/dev-packages/node-integration-tests/suites/pino/scenario-structured-logging.mjs b/dev-packages/node-integration-tests/suites/pino/scenario-structured-logging.mjs
new file mode 100644
index 000000000000..8e3d6b75fb7c
--- /dev/null
+++ b/dev-packages/node-integration-tests/suites/pino/scenario-structured-logging.mjs
@@ -0,0 +1,13 @@
+import * as Sentry from '@sentry/node';
+import pino from 'pino';
+
+const logger = pino({ name: 'myapp' });
+
+Sentry.withIsolationScope(() => {
+ Sentry.startSpan({ name: 'startup' }, () => {
+ // Omitting the message string and using the msg field instead
+ logger.info({ msg: 'test-msg' });
+ logger.info({ msg: 'test-msg-2', userId: 'user-123', action: 'login' });
+ logger.info('test-string');
+ });
+});
diff --git a/dev-packages/node-integration-tests/suites/pino/test.ts b/dev-packages/node-integration-tests/suites/pino/test.ts
index 21cd30bdef60..a0a16c422dc2 100644
--- a/dev-packages/node-integration-tests/suites/pino/test.ts
+++ b/dev-packages/node-integration-tests/suites/pino/test.ts
@@ -232,4 +232,67 @@ conditionalTest({ min: 20 })('Pino integration', () => {
.start()
.completed();
});
+
+ test('captures structured logs with msg field', async () => {
+ const instrumentPath = join(__dirname, 'instrument.mjs');
+
+ await createRunner(__dirname, 'scenario-structured-logging.mjs')
+ .withMockSentryServer()
+ .withInstrument(instrumentPath)
+ .ignore('transaction')
+ .expect({
+ log: {
+ items: [
+ {
+ timestamp: expect.any(Number),
+ level: 'info',
+ body: 'test-msg',
+ trace_id: expect.any(String),
+ severity_number: 9,
+ attributes: {
+ name: { value: 'myapp', type: 'string' },
+ 'pino.logger.level': { value: 30, type: 'integer' },
+ msg: { value: 'test-msg', type: 'string' },
+ 'sentry.origin': { value: 'auto.log.pino', type: 'string' },
+ 'sentry.release': { value: '1.0', type: 'string' },
+ 'sentry.sdk.name': { value: 'sentry.javascript.node', type: 'string' },
+ },
+ },
+ {
+ timestamp: expect.any(Number),
+ level: 'info',
+ body: 'test-msg-2',
+ trace_id: expect.any(String),
+ severity_number: 9,
+ attributes: {
+ name: { value: 'myapp', type: 'string' },
+ 'pino.logger.level': { value: 30, type: 'integer' },
+ msg: { value: 'test-msg-2', type: 'string' },
+ userId: { value: 'user-123', type: 'string' },
+ action: { value: 'login', type: 'string' },
+ 'sentry.origin': { value: 'auto.log.pino', type: 'string' },
+ 'sentry.release': { value: '1.0', type: 'string' },
+ 'sentry.sdk.name': { value: 'sentry.javascript.node', type: 'string' },
+ },
+ },
+ {
+ timestamp: expect.any(Number),
+ level: 'info',
+ body: 'test-string',
+ trace_id: expect.any(String),
+ severity_number: 9,
+ attributes: {
+ name: { value: 'myapp', type: 'string' },
+ 'pino.logger.level': { value: 30, type: 'integer' },
+ 'sentry.origin': { value: 'auto.log.pino', type: 'string' },
+ 'sentry.release': { value: '1.0', type: 'string' },
+ 'sentry.sdk.name': { value: 'sentry.javascript.node', type: 'string' },
+ },
+ },
+ ],
+ },
+ })
+ .start()
+ .completed();
+ });
});
diff --git a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app-default.js b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app-default.js
index 9a53436867d9..76ee6f6e57a0 100644
--- a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app-default.js
+++ b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app-default.js
@@ -1,5 +1,3 @@
-/* eslint-disable no-unused-vars */
-
const Sentry = require('@sentry/node');
const { loggingTransport } = require('@sentry-internal/node-integration-tests');
diff --git a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app.js b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app.js
index 9bbe40004fc7..eb0958fdd151 100644
--- a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app.js
+++ b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/local-variables-out-of-app.js
@@ -1,5 +1,3 @@
-/* eslint-disable no-unused-vars */
-
const Sentry = require('@sentry/node');
const { loggingTransport } = require('@sentry-internal/node-integration-tests');
diff --git a/dev-packages/node-integration-tests/suites/tracing/anthropic/test.ts b/dev-packages/node-integration-tests/suites/tracing/anthropic/test.ts
index 3fc3b544b843..ebebf60db042 100644
--- a/dev-packages/node-integration-tests/suites/tracing/anthropic/test.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/anthropic/test.ts
@@ -11,7 +11,7 @@ describe('Anthropic integration', () => {
spans: expect.arrayContaining([
// First span - basic message completion without PII
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
'sentry.op': 'gen_ai.messages',
'sentry.origin': 'auto.ai.anthropic',
@@ -24,7 +24,7 @@ describe('Anthropic integration', () => {
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 15,
'gen_ai.usage.total_tokens': 25,
- },
+ }),
description: 'messages claude-3-haiku-20240307',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
@@ -32,13 +32,13 @@ describe('Anthropic integration', () => {
}),
// Second span - error handling
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
'sentry.op': 'gen_ai.messages',
'sentry.origin': 'auto.ai.anthropic',
'gen_ai.system': 'anthropic',
'gen_ai.request.model': 'error-model',
- },
+ }),
description: 'messages error-model',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
@@ -46,13 +46,13 @@ describe('Anthropic integration', () => {
}),
// Third span - token counting (no response.text because recordOutputs=false by default)
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
'sentry.op': 'gen_ai.messages',
'sentry.origin': 'auto.ai.anthropic',
'gen_ai.system': 'anthropic',
'gen_ai.request.model': 'claude-3-haiku-20240307',
- },
+ }),
description: 'messages claude-3-haiku-20240307',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
@@ -60,7 +60,7 @@ describe('Anthropic integration', () => {
}),
// Fourth span - models.retrieve
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
'anthropic.response.timestamp': '2024-05-08T05:20:00.000Z',
'gen_ai.operation.name': 'models',
'sentry.op': 'gen_ai.models',
@@ -69,7 +69,7 @@ describe('Anthropic integration', () => {
'gen_ai.request.model': 'claude-3-haiku-20240307',
'gen_ai.response.id': 'claude-3-haiku-20240307',
'gen_ai.response.model': 'claude-3-haiku-20240307',
- },
+ }),
description: 'models claude-3-haiku-20240307',
op: 'gen_ai.models',
origin: 'auto.ai.anthropic',
@@ -83,88 +83,191 @@ describe('Anthropic integration', () => {
spans: expect.arrayContaining([
// First span - basic message completion with PII
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
- 'sentry.op': 'gen_ai.messages',
- 'sentry.origin': 'auto.ai.anthropic',
- 'gen_ai.system': 'anthropic',
+ 'gen_ai.request.max_tokens': 100,
+ 'gen_ai.request.messages':
+ '[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is the capital of France?"}]',
'gen_ai.request.model': 'claude-3-haiku-20240307',
'gen_ai.request.temperature': 0.7,
- 'gen_ai.request.max_tokens': 100,
- 'gen_ai.request.messages': '[{"role":"user","content":"What is the capital of France?"}]',
- 'gen_ai.response.model': 'claude-3-haiku-20240307',
'gen_ai.response.id': 'msg_mock123',
+ 'gen_ai.response.model': 'claude-3-haiku-20240307',
'gen_ai.response.text': 'Hello from Anthropic mock!',
+ 'gen_ai.system': 'anthropic',
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 15,
'gen_ai.usage.total_tokens': 25,
- },
+ 'sentry.op': 'gen_ai.messages',
+ 'sentry.origin': 'auto.ai.anthropic',
+ }),
description: 'messages claude-3-haiku-20240307',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
status: 'ok',
}),
- // Second span - error handling with PII
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
+ 'http.request.method': 'POST',
+ 'http.request.method_original': 'POST',
+ 'http.response.header.content-length': 247,
+ 'http.response.status_code': 200,
+ 'otel.kind': 'CLIENT',
+ 'sentry.op': 'http.client',
+ 'sentry.origin': 'auto.http.otel.node_fetch',
+ 'url.path': '/anthropic/v1/messages',
+ 'url.query': '',
+ 'url.scheme': 'http',
+ }),
+ op: 'http.client',
+ origin: 'auto.http.otel.node_fetch',
+ status: 'ok',
+ }),
+
+ // Second - error handling with PII
+ expect.objectContaining({
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
+ 'gen_ai.request.messages': '[{"role":"user","content":"This will fail"}]',
+ 'gen_ai.request.model': 'error-model',
+ 'gen_ai.system': 'anthropic',
'sentry.op': 'gen_ai.messages',
'sentry.origin': 'auto.ai.anthropic',
- 'gen_ai.system': 'anthropic',
- 'gen_ai.request.model': 'error-model',
- 'gen_ai.request.messages': '[{"role":"user","content":"This will fail"}]',
- },
+ }),
description: 'messages error-model',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
status: 'internal_error',
}),
- // Third span - token counting with PII (response.text is present because sendDefaultPii=true enables recordOutputs)
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
+ 'http.request.method': 'POST',
+ 'http.request.method_original': 'POST',
+ 'http.response.header.content-length': 15,
+ 'http.response.status_code': 404,
+ 'otel.kind': 'CLIENT',
+ 'sentry.op': 'http.client',
+ 'sentry.origin': 'auto.http.otel.node_fetch',
+ 'url.path': '/anthropic/v1/messages',
+ 'url.query': '',
+ 'url.scheme': 'http',
+ }),
+ op: 'http.client',
+ origin: 'auto.http.otel.node_fetch',
+ status: 'not_found',
+ }),
+
+ // Third - token counting with PII (response.text is present because sendDefaultPii=true enables recordOutputs)
+ expect.objectContaining({
+ data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
+ 'gen_ai.request.messages': '[{"role":"user","content":"What is the capital of France?"}]',
+ 'gen_ai.request.model': 'claude-3-haiku-20240307',
+ 'gen_ai.response.text': '15',
+ 'gen_ai.system': 'anthropic',
'sentry.op': 'gen_ai.messages',
'sentry.origin': 'auto.ai.anthropic',
- 'gen_ai.system': 'anthropic',
- 'gen_ai.request.model': 'claude-3-haiku-20240307',
- 'gen_ai.request.messages': '[{"role":"user","content":"What is the capital of France?"}]',
- 'gen_ai.response.text': '15', // Only present because recordOutputs=true when sendDefaultPii=true
- },
+ }),
description: 'messages claude-3-haiku-20240307',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
status: 'ok',
}),
- // Fourth span - models.retrieve with PII
expect.objectContaining({
- data: {
+ data: expect.objectContaining({
+ 'http.request.method': 'POST',
+ 'http.request.method_original': 'POST',
+ 'http.response.header.content-length': 19,
+ 'http.response.status_code': 200,
+ 'otel.kind': 'CLIENT',
+ 'sentry.op': 'http.client',
+ 'sentry.origin': 'auto.http.otel.node_fetch',
+ 'url.path': '/anthropic/v1/messages/count_tokens',
+ 'url.query': '',
+ 'url.scheme': 'http',
+ }),
+ op: 'http.client',
+ origin: 'auto.http.otel.node_fetch',
+ status: 'ok',
+ }),
+
+ // Fourth - models.retrieve with PII
+ expect.objectContaining({
+ data: expect.objectContaining({
'anthropic.response.timestamp': '2024-05-08T05:20:00.000Z',
'gen_ai.operation.name': 'models',
- 'sentry.op': 'gen_ai.models',
- 'sentry.origin': 'auto.ai.anthropic',
- 'gen_ai.system': 'anthropic',
'gen_ai.request.model': 'claude-3-haiku-20240307',
'gen_ai.response.id': 'claude-3-haiku-20240307',
'gen_ai.response.model': 'claude-3-haiku-20240307',
- },
+ 'gen_ai.system': 'anthropic',
+ 'sentry.op': 'gen_ai.models',
+ 'sentry.origin': 'auto.ai.anthropic',
+ }),
description: 'models claude-3-haiku-20240307',
op: 'gen_ai.models',
origin: 'auto.ai.anthropic',
status: 'ok',
}),
- // Fifth span - messages.create with stream: true
+ expect.objectContaining({
+ data: expect.objectContaining({
+ 'http.request.method': 'GET',
+ 'http.request.method_original': 'GET',
+ 'http.response.header.content-length': 123,
+ 'http.response.status_code': 200,
+ 'otel.kind': 'CLIENT',
+ 'sentry.op': 'http.client',
+ 'sentry.origin': 'auto.http.otel.node_fetch',
+ 'url.path': '/anthropic/v1/models/claude-3-haiku-20240307',
+ 'url.query': '',
+ 'url.scheme': 'http',
+ 'user_agent.original': 'Anthropic/JS 0.63.0',
+ }),
+ op: 'http.client',
+ origin: 'auto.http.otel.node_fetch',
+ status: 'ok',
+ }),
+
+ // Fifth - messages.create with stream: true
expect.objectContaining({
data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
+ 'gen_ai.request.messages': '[{"role":"user","content":"What is the capital of France?"}]',
'gen_ai.request.model': 'claude-3-haiku-20240307',
'gen_ai.request.stream': true,
+ 'gen_ai.response.id': 'msg_stream123',
+ 'gen_ai.response.model': 'claude-3-haiku-20240307',
+ 'gen_ai.response.streaming': true,
+ 'gen_ai.response.text': 'Hello from stream!',
+ 'gen_ai.system': 'anthropic',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 15,
+ 'gen_ai.usage.total_tokens': 25,
+ 'sentry.op': 'gen_ai.messages',
+ 'sentry.origin': 'auto.ai.anthropic',
}),
description: 'messages claude-3-haiku-20240307 stream-response',
op: 'gen_ai.messages',
origin: 'auto.ai.anthropic',
status: 'ok',
}),
- // Sixth span - messages.stream
+ expect.objectContaining({
+ data: expect.objectContaining({
+ 'http.request.method': 'POST',
+ 'http.request.method_original': 'POST',
+ 'http.response.status_code': 200,
+ 'otel.kind': 'CLIENT',
+ 'sentry.op': 'http.client',
+ 'sentry.origin': 'auto.http.otel.node_fetch',
+ 'url.path': '/anthropic/v1/messages',
+ 'url.query': '',
+ 'url.scheme': 'http',
+ 'user_agent.original': 'Anthropic/JS 0.63.0',
+ }),
+ op: 'http.client',
+ origin: 'auto.http.otel.node_fetch',
+ status: 'ok',
+ }),
+
+ // Sixth - messages.stream
expect.objectContaining({
data: expect.objectContaining({
'gen_ai.operation.name': 'messages',
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-mutation.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-mutation.js
index d0f0172923ef..b7b14e7e1215 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-mutation.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-mutation.js
@@ -39,5 +39,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-query.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-query.js
index b9a05c4b1c3c..0c3197b820e3 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-query.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario-query.js
@@ -33,5 +33,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-invalid-root-span.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-invalid-root-span.js
index 840a5551b98a..4d751d81115e 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-invalid-root-span.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-invalid-root-span.js
@@ -30,5 +30,4 @@ async function run() {
});
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations-many.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations-many.js
index 992ff5337b46..be01fa002d09 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations-many.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations-many.js
@@ -39,5 +39,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations.js
index d9eeca63ae10..d73f57670b7f 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-multiple-operations.js
@@ -41,5 +41,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-mutation.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-mutation.js
index cf92164fc0d7..feca6775865a 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-mutation.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-mutation.js
@@ -43,5 +43,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-no-operation-name.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-no-operation-name.js
index 14879bc0e79d..2525207ee3b3 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-no-operation-name.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-no-operation-name.js
@@ -37,5 +37,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-query.js b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-query.js
index 4dc3357ab17f..a5c6512ffe3d 100644
--- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-query.js
+++ b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/useOperationNameForRootSpan/scenario-query.js
@@ -37,5 +37,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/mongodb/scenario.js b/dev-packages/node-integration-tests/suites/tracing/mongodb/scenario.js
index 7da8a0b800fc..42480988a790 100644
--- a/dev-packages/node-integration-tests/suites/tracing/mongodb/scenario.js
+++ b/dev-packages/node-integration-tests/suites/tracing/mongodb/scenario.js
@@ -44,5 +44,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/mongoose/scenario.js b/dev-packages/node-integration-tests/suites/tracing/mongoose/scenario.js
index 99c04cde2667..9333ea48798e 100644
--- a/dev-packages/node-integration-tests/suites/tracing/mongoose/scenario.js
+++ b/dev-packages/node-integration-tests/suites/tracing/mongoose/scenario.js
@@ -45,5 +45,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/instrument-root-span.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-root-span.mjs
new file mode 100644
index 000000000000..f3fbac9d1274
--- /dev/null
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-root-span.mjs
@@ -0,0 +1,11 @@
+import * as Sentry from '@sentry/node';
+import { loggingTransport } from '@sentry-internal/node-integration-tests';
+
+Sentry.init({
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+ release: '1.0',
+ tracesSampleRate: 1.0,
+ sendDefaultPii: false,
+ transport: loggingTransport,
+ integrations: [Sentry.openAIIntegration()],
+});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-options.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-options.mjs
index 35f97fd84093..86219de9983a 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-options.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-options.mjs
@@ -13,4 +13,10 @@ Sentry.init({
recordOutputs: true,
}),
],
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-pii.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-pii.mjs
index a53a13af7738..74bc63db971b 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-pii.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/instrument-with-pii.mjs
@@ -8,4 +8,10 @@ Sentry.init({
sendDefaultPii: true,
transport: loggingTransport,
integrations: [Sentry.openAIIntegration()],
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/instrument.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/instrument.mjs
index f3fbac9d1274..1ff3990a0693 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/instrument.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/instrument.mjs
@@ -8,4 +8,10 @@ Sentry.init({
sendDefaultPii: false,
transport: loggingTransport,
integrations: [Sentry.openAIIntegration()],
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/scenario-chat.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/scenario-chat.mjs
index fde651c3c1ff..6031b6861f5b 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/scenario-chat.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/scenario-chat.mjs
@@ -1,245 +1,203 @@
-import { instrumentOpenAiClient } from '@sentry/core';
import * as Sentry from '@sentry/node';
+import express from 'express';
+import OpenAI from 'openai';
-class MockOpenAI {
- constructor(config) {
- this.apiKey = config.apiKey;
+function startMockServer() {
+ const app = express();
+ app.use(express.json());
- this.chat = {
- completions: {
- create: async params => {
- // Simulate processing time
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Chat completions endpoint
+ app.post('/openai/chat/completions', (req, res) => {
+ const { model, stream } = req.body;
- if (params.model === 'error-model') {
- const error = new Error('Model not found');
- error.status = 404;
- error.headers = { 'x-request-id': 'mock-request-123' };
- throw error;
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(500).set('x-request-id', 'mock-request-error').end('Internal server error');
+ return;
+ }
- // If stream is requested, return an async generator
- if (params.stream) {
- return this._createChatCompletionStream(params);
- }
+ if (stream) {
+ // Streaming response
+ res.setHeader('Content-Type', 'text/event-stream');
+ res.setHeader('Cache-Control', 'no-cache');
+ res.setHeader('Connection', 'keep-alive');
- return {
- id: 'chatcmpl-mock123',
- object: 'chat.completion',
- created: 1677652288,
- model: params.model,
- system_fingerprint: 'fp_44709d6fcb',
- choices: [
- {
- index: 0,
- message: {
- role: 'assistant',
- content: 'Hello from OpenAI mock!',
- },
- finish_reason: 'stop',
- },
- ],
- usage: {
- prompt_tokens: 10,
- completion_tokens: 15,
- total_tokens: 25,
+ const chunks = [
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: { role: 'assistant', content: '' }, index: 0 }],
+ },
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: { content: 'Hello from OpenAI streaming!' }, index: 0 }],
+ },
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: {}, index: 0, finish_reason: 'stop' }],
+ usage: {
+ prompt_tokens: 12,
+ completion_tokens: 18,
+ total_tokens: 30,
+ },
+ },
+ ];
+
+ chunks.forEach((chunk, index) => {
+ setTimeout(() => {
+ res.write(`data: ${JSON.stringify(chunk)}\n\n`);
+ if (index === chunks.length - 1) {
+ res.write('data: [DONE]\n\n');
+ res.end();
+ }
+ }, index * 10);
+ });
+ } else {
+ // Non-streaming response
+ res.send({
+ id: 'chatcmpl-mock123',
+ object: 'chat.completion',
+ created: 1677652288,
+ model: model,
+ choices: [
+ {
+ index: 0,
+ message: {
+ role: 'assistant',
+ content: 'Hello from OpenAI mock!',
},
- };
+ finish_reason: 'stop',
+ },
+ ],
+ usage: {
+ prompt_tokens: 10,
+ completion_tokens: 15,
+ total_tokens: 25,
},
- },
- };
+ });
+ }
+ });
- this.responses = {
- create: async params => {
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Responses API endpoint
+ app.post('/openai/responses', (req, res) => {
+ const { model, stream } = req.body;
- // If stream is requested, return an async generator
- if (params.stream) {
- return this._createResponsesApiStream(params);
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(500).set('x-request-id', 'mock-request-error').end('Internal server error');
+ return;
+ }
- return {
- id: 'resp_mock456',
- object: 'response',
- created_at: 1677652290,
- model: params.model,
- input_text: params.input,
- output_text: `Response to: ${params.input}`,
- status: 'completed',
- usage: {
- input_tokens: 5,
- output_tokens: 8,
- total_tokens: 13,
- },
- };
- },
- };
- }
+ if (stream) {
+ // Streaming response - using event-based format with 'response' field
+ res.setHeader('Content-Type', 'text/event-stream');
+ res.setHeader('Cache-Control', 'no-cache');
+ res.setHeader('Connection', 'keep-alive');
- // Create a mock streaming response for chat completions
- async *_createChatCompletionStream(params) {
- // First chunk with basic info
- yield {
- id: 'chatcmpl-stream-123',
- object: 'chat.completion.chunk',
- created: 1677652300,
- model: params.model,
- system_fingerprint: 'fp_stream_123',
- choices: [
+ const events = [
{
- index: 0,
- delta: {
- role: 'assistant',
- content: 'Hello',
+ type: 'response.created',
+ response: {
+ id: 'resp_stream_456',
+ object: 'response',
+ created_at: 1677652310,
+ model: model,
+ status: 'in_progress',
},
- finish_reason: null,
},
- ],
- };
-
- // Second chunk with more content
- yield {
- id: 'chatcmpl-stream-123',
- object: 'chat.completion.chunk',
- created: 1677652300,
- model: params.model,
- system_fingerprint: 'fp_stream_123',
- choices: [
{
- index: 0,
- delta: {
- content: ' from OpenAI streaming!',
+ type: 'response.output_text.delta',
+ delta: 'Streaming response to: Test streaming responses API',
+ response: {
+ id: 'resp_stream_456',
+ model: model,
+ created_at: 1677652310,
},
- finish_reason: 'stop',
- },
- ],
- usage: {
- prompt_tokens: 12,
- completion_tokens: 18,
- total_tokens: 30,
- completion_tokens_details: {
- accepted_prediction_tokens: 0,
- audio_tokens: 0,
- reasoning_tokens: 0,
- rejected_prediction_tokens: 0,
},
- prompt_tokens_details: {
- audio_tokens: 0,
- cached_tokens: 0,
- },
- },
- };
- }
-
- // Create a mock streaming response for responses API
- async *_createResponsesApiStream(params) {
- // Response created event
- yield {
- type: 'response.created',
- response: {
- id: 'resp_stream_456',
- object: 'response',
- created_at: 1677652310,
- model: params.model,
- status: 'in_progress',
- error: null,
- incomplete_details: null,
- instructions: params.instructions,
- max_output_tokens: 1000,
- parallel_tool_calls: false,
- previous_response_id: null,
- reasoning: {
- effort: null,
- summary: null,
- },
- store: false,
- temperature: 0.7,
- text: {
- format: {
- type: 'text',
+ {
+ type: 'response.completed',
+ response: {
+ id: 'resp_stream_456',
+ object: 'response',
+ created_at: 1677652310,
+ model: model,
+ status: 'completed',
+ output_text: 'Test streaming responses API',
+ usage: {
+ input_tokens: 6,
+ output_tokens: 10,
+ total_tokens: 16,
+ },
},
},
- tool_choice: 'auto',
- top_p: 1.0,
- truncation: 'disabled',
- user: null,
- metadata: {},
- output: [],
- output_text: '',
- usage: {
- input_tokens: 0,
- output_tokens: 0,
- total_tokens: 0,
- },
- },
- sequence_number: 1,
- };
-
- // Response in progress with output text delta
- yield {
- type: 'response.output_text.delta',
- delta: 'Streaming response to: ',
- sequence_number: 2,
- };
+ ];
- yield {
- type: 'response.output_text.delta',
- delta: params.input,
- sequence_number: 3,
- };
-
- // Response completed event
- yield {
- type: 'response.completed',
- response: {
- id: 'resp_stream_456',
+ events.forEach((event, index) => {
+ setTimeout(() => {
+ res.write(`data: ${JSON.stringify(event)}\n\n`);
+ if (index === events.length - 1) {
+ res.write('data: [DONE]\n\n');
+ res.end();
+ }
+ }, index * 10);
+ });
+ } else {
+ // Non-streaming response
+ res.send({
+ id: 'resp_mock456',
object: 'response',
- created_at: 1677652310,
- model: params.model,
- status: 'completed',
- error: null,
- incomplete_details: null,
- instructions: params.instructions,
- max_output_tokens: 1000,
- parallel_tool_calls: false,
- previous_response_id: null,
- reasoning: {
- effort: null,
- summary: null,
- },
- store: false,
- temperature: 0.7,
- text: {
- format: {
- type: 'text',
+ created_at: 1677652290,
+ model: model,
+ output: [
+ {
+ type: 'message',
+ id: 'msg_mock_output_1',
+ status: 'completed',
+ role: 'assistant',
+ content: [
+ {
+ type: 'output_text',
+ text: `Response to: ${req.body.input}`,
+ annotations: [],
+ },
+ ],
},
- },
- tool_choice: 'auto',
- top_p: 1.0,
- truncation: 'disabled',
- user: null,
- metadata: {},
- output: [],
- output_text: params.input,
+ ],
+ output_text: `Response to: ${req.body.input}`,
+ status: 'completed',
usage: {
- input_tokens: 6,
- output_tokens: 10,
- total_tokens: 16,
+ input_tokens: 5,
+ output_tokens: 8,
+ total_tokens: 13,
},
- },
- sequence_number: 4,
- };
- }
+ });
+ }
+ });
+
+ return new Promise(resolve => {
+ const server = app.listen(0, () => {
+ resolve(server);
+ });
+ });
}
async function run() {
+ const server = await startMockServer();
+
await Sentry.startSpan({ op: 'function', name: 'main' }, async () => {
- const mockClient = new MockOpenAI({
+ const client = new OpenAI({
+ baseURL: `http://localhost:${server.address().port}/openai`,
apiKey: 'mock-api-key',
});
- const client = instrumentOpenAiClient(mockClient);
-
// First test: basic chat completion
await client.chat.completions.create({
model: 'gpt-3.5-turbo',
@@ -313,6 +271,8 @@ async function run() {
// Error is expected and handled
}
});
+
+ server.close();
}
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/scenario-embeddings.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/scenario-embeddings.mjs
index 9cdb24a42da9..f6cbe1160bf5 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/scenario-embeddings.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/scenario-embeddings.mjs
@@ -1,49 +1,55 @@
-import { instrumentOpenAiClient } from '@sentry/core';
import * as Sentry from '@sentry/node';
+import express from 'express';
+import OpenAI from 'openai';
-class MockOpenAI {
- constructor(config) {
- this.apiKey = config.apiKey;
+function startMockServer() {
+ const app = express();
+ app.use(express.json());
- this.embeddings = {
- create: async params => {
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Embeddings endpoint
+ app.post('/openai/embeddings', (req, res) => {
+ const { model } = req.body;
- if (params.model === 'error-model') {
- const error = new Error('Model not found');
- error.status = 404;
- error.headers = { 'x-request-id': 'mock-request-123' };
- throw error;
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(404).set('x-request-id', 'mock-request-123').end('Model not found');
+ return;
+ }
- return {
- object: 'list',
- data: [
- {
- object: 'embedding',
- embedding: [0.1, 0.2, 0.3],
- index: 0,
- },
- ],
- model: params.model,
- usage: {
- prompt_tokens: 10,
- total_tokens: 10,
- },
- };
+ // Return embeddings response
+ res.send({
+ object: 'list',
+ data: [
+ {
+ object: 'embedding',
+ embedding: [0.1, 0.2, 0.3],
+ index: 0,
+ },
+ ],
+ model: model,
+ usage: {
+ prompt_tokens: 10,
+ total_tokens: 10,
},
- };
- }
+ });
+ });
+
+ return new Promise(resolve => {
+ const server = app.listen(0, () => {
+ resolve(server);
+ });
+ });
}
async function run() {
+ const server = await startMockServer();
+
await Sentry.startSpan({ op: 'function', name: 'main' }, async () => {
- const mockClient = new MockOpenAI({
+ const client = new OpenAI({
+ baseURL: `http://localhost:${server.address().port}/openai`,
apiKey: 'mock-api-key',
});
- const client = instrumentOpenAiClient(mockClient);
-
// First test: embeddings API
await client.embeddings.create({
input: 'Embedding test!',
@@ -62,6 +68,8 @@ async function run() {
// Error is expected and handled
}
});
+
+ server.close();
}
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/test.ts b/dev-packages/node-integration-tests/suites/tracing/openai/test.ts
index a0436d9e5a8b..d56bb27f6a24 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/test.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/test.ts
@@ -454,7 +454,7 @@ describe('OpenAI integration', () => {
});
});
- createEsmAndCjsTests(__dirname, 'scenario-root-span.mjs', 'instrument.mjs', (createRunner, test) => {
+ createEsmAndCjsTests(__dirname, 'scenario-root-span.mjs', 'instrument-root-span.mjs', (createRunner, test) => {
test('it works without a wrapping span', async () => {
await createRunner()
// First the span that our mock express server is emitting, unrelated to this test
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-root-span.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-root-span.mjs
new file mode 100644
index 000000000000..f3fbac9d1274
--- /dev/null
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-root-span.mjs
@@ -0,0 +1,11 @@
+import * as Sentry from '@sentry/node';
+import { loggingTransport } from '@sentry-internal/node-integration-tests';
+
+Sentry.init({
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+ release: '1.0',
+ tracesSampleRate: 1.0,
+ sendDefaultPii: false,
+ transport: loggingTransport,
+ integrations: [Sentry.openAIIntegration()],
+});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-options.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-options.mjs
index 35f97fd84093..51da27f73bbc 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-options.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-options.mjs
@@ -13,4 +13,11 @@ Sentry.init({
recordOutputs: true,
}),
],
+ debug: true,
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-pii.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-pii.mjs
index a53a13af7738..74bc63db971b 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-pii.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument-with-pii.mjs
@@ -8,4 +8,10 @@ Sentry.init({
sendDefaultPii: true,
transport: loggingTransport,
integrations: [Sentry.openAIIntegration()],
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument.mjs
index f3fbac9d1274..1ff3990a0693 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/instrument.mjs
@@ -8,4 +8,10 @@ Sentry.init({
sendDefaultPii: false,
transport: loggingTransport,
integrations: [Sentry.openAIIntegration()],
+ beforeSendTransaction: event => {
+ if (event.transaction.includes('/openai/')) {
+ return null;
+ }
+ return event;
+ },
});
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-chat.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-chat.mjs
index fde651c3c1ff..6031b6861f5b 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-chat.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-chat.mjs
@@ -1,245 +1,203 @@
-import { instrumentOpenAiClient } from '@sentry/core';
import * as Sentry from '@sentry/node';
+import express from 'express';
+import OpenAI from 'openai';
-class MockOpenAI {
- constructor(config) {
- this.apiKey = config.apiKey;
+function startMockServer() {
+ const app = express();
+ app.use(express.json());
- this.chat = {
- completions: {
- create: async params => {
- // Simulate processing time
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Chat completions endpoint
+ app.post('/openai/chat/completions', (req, res) => {
+ const { model, stream } = req.body;
- if (params.model === 'error-model') {
- const error = new Error('Model not found');
- error.status = 404;
- error.headers = { 'x-request-id': 'mock-request-123' };
- throw error;
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(500).set('x-request-id', 'mock-request-error').end('Internal server error');
+ return;
+ }
- // If stream is requested, return an async generator
- if (params.stream) {
- return this._createChatCompletionStream(params);
- }
+ if (stream) {
+ // Streaming response
+ res.setHeader('Content-Type', 'text/event-stream');
+ res.setHeader('Cache-Control', 'no-cache');
+ res.setHeader('Connection', 'keep-alive');
- return {
- id: 'chatcmpl-mock123',
- object: 'chat.completion',
- created: 1677652288,
- model: params.model,
- system_fingerprint: 'fp_44709d6fcb',
- choices: [
- {
- index: 0,
- message: {
- role: 'assistant',
- content: 'Hello from OpenAI mock!',
- },
- finish_reason: 'stop',
- },
- ],
- usage: {
- prompt_tokens: 10,
- completion_tokens: 15,
- total_tokens: 25,
+ const chunks = [
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: { role: 'assistant', content: '' }, index: 0 }],
+ },
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: { content: 'Hello from OpenAI streaming!' }, index: 0 }],
+ },
+ {
+ id: 'chatcmpl-stream-123',
+ object: 'chat.completion.chunk',
+ created: 1677652300,
+ model: model,
+ choices: [{ delta: {}, index: 0, finish_reason: 'stop' }],
+ usage: {
+ prompt_tokens: 12,
+ completion_tokens: 18,
+ total_tokens: 30,
+ },
+ },
+ ];
+
+ chunks.forEach((chunk, index) => {
+ setTimeout(() => {
+ res.write(`data: ${JSON.stringify(chunk)}\n\n`);
+ if (index === chunks.length - 1) {
+ res.write('data: [DONE]\n\n');
+ res.end();
+ }
+ }, index * 10);
+ });
+ } else {
+ // Non-streaming response
+ res.send({
+ id: 'chatcmpl-mock123',
+ object: 'chat.completion',
+ created: 1677652288,
+ model: model,
+ choices: [
+ {
+ index: 0,
+ message: {
+ role: 'assistant',
+ content: 'Hello from OpenAI mock!',
},
- };
+ finish_reason: 'stop',
+ },
+ ],
+ usage: {
+ prompt_tokens: 10,
+ completion_tokens: 15,
+ total_tokens: 25,
},
- },
- };
+ });
+ }
+ });
- this.responses = {
- create: async params => {
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Responses API endpoint
+ app.post('/openai/responses', (req, res) => {
+ const { model, stream } = req.body;
- // If stream is requested, return an async generator
- if (params.stream) {
- return this._createResponsesApiStream(params);
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(500).set('x-request-id', 'mock-request-error').end('Internal server error');
+ return;
+ }
- return {
- id: 'resp_mock456',
- object: 'response',
- created_at: 1677652290,
- model: params.model,
- input_text: params.input,
- output_text: `Response to: ${params.input}`,
- status: 'completed',
- usage: {
- input_tokens: 5,
- output_tokens: 8,
- total_tokens: 13,
- },
- };
- },
- };
- }
+ if (stream) {
+ // Streaming response - using event-based format with 'response' field
+ res.setHeader('Content-Type', 'text/event-stream');
+ res.setHeader('Cache-Control', 'no-cache');
+ res.setHeader('Connection', 'keep-alive');
- // Create a mock streaming response for chat completions
- async *_createChatCompletionStream(params) {
- // First chunk with basic info
- yield {
- id: 'chatcmpl-stream-123',
- object: 'chat.completion.chunk',
- created: 1677652300,
- model: params.model,
- system_fingerprint: 'fp_stream_123',
- choices: [
+ const events = [
{
- index: 0,
- delta: {
- role: 'assistant',
- content: 'Hello',
+ type: 'response.created',
+ response: {
+ id: 'resp_stream_456',
+ object: 'response',
+ created_at: 1677652310,
+ model: model,
+ status: 'in_progress',
},
- finish_reason: null,
},
- ],
- };
-
- // Second chunk with more content
- yield {
- id: 'chatcmpl-stream-123',
- object: 'chat.completion.chunk',
- created: 1677652300,
- model: params.model,
- system_fingerprint: 'fp_stream_123',
- choices: [
{
- index: 0,
- delta: {
- content: ' from OpenAI streaming!',
+ type: 'response.output_text.delta',
+ delta: 'Streaming response to: Test streaming responses API',
+ response: {
+ id: 'resp_stream_456',
+ model: model,
+ created_at: 1677652310,
},
- finish_reason: 'stop',
- },
- ],
- usage: {
- prompt_tokens: 12,
- completion_tokens: 18,
- total_tokens: 30,
- completion_tokens_details: {
- accepted_prediction_tokens: 0,
- audio_tokens: 0,
- reasoning_tokens: 0,
- rejected_prediction_tokens: 0,
},
- prompt_tokens_details: {
- audio_tokens: 0,
- cached_tokens: 0,
- },
- },
- };
- }
-
- // Create a mock streaming response for responses API
- async *_createResponsesApiStream(params) {
- // Response created event
- yield {
- type: 'response.created',
- response: {
- id: 'resp_stream_456',
- object: 'response',
- created_at: 1677652310,
- model: params.model,
- status: 'in_progress',
- error: null,
- incomplete_details: null,
- instructions: params.instructions,
- max_output_tokens: 1000,
- parallel_tool_calls: false,
- previous_response_id: null,
- reasoning: {
- effort: null,
- summary: null,
- },
- store: false,
- temperature: 0.7,
- text: {
- format: {
- type: 'text',
+ {
+ type: 'response.completed',
+ response: {
+ id: 'resp_stream_456',
+ object: 'response',
+ created_at: 1677652310,
+ model: model,
+ status: 'completed',
+ output_text: 'Test streaming responses API',
+ usage: {
+ input_tokens: 6,
+ output_tokens: 10,
+ total_tokens: 16,
+ },
},
},
- tool_choice: 'auto',
- top_p: 1.0,
- truncation: 'disabled',
- user: null,
- metadata: {},
- output: [],
- output_text: '',
- usage: {
- input_tokens: 0,
- output_tokens: 0,
- total_tokens: 0,
- },
- },
- sequence_number: 1,
- };
-
- // Response in progress with output text delta
- yield {
- type: 'response.output_text.delta',
- delta: 'Streaming response to: ',
- sequence_number: 2,
- };
+ ];
- yield {
- type: 'response.output_text.delta',
- delta: params.input,
- sequence_number: 3,
- };
-
- // Response completed event
- yield {
- type: 'response.completed',
- response: {
- id: 'resp_stream_456',
+ events.forEach((event, index) => {
+ setTimeout(() => {
+ res.write(`data: ${JSON.stringify(event)}\n\n`);
+ if (index === events.length - 1) {
+ res.write('data: [DONE]\n\n');
+ res.end();
+ }
+ }, index * 10);
+ });
+ } else {
+ // Non-streaming response
+ res.send({
+ id: 'resp_mock456',
object: 'response',
- created_at: 1677652310,
- model: params.model,
- status: 'completed',
- error: null,
- incomplete_details: null,
- instructions: params.instructions,
- max_output_tokens: 1000,
- parallel_tool_calls: false,
- previous_response_id: null,
- reasoning: {
- effort: null,
- summary: null,
- },
- store: false,
- temperature: 0.7,
- text: {
- format: {
- type: 'text',
+ created_at: 1677652290,
+ model: model,
+ output: [
+ {
+ type: 'message',
+ id: 'msg_mock_output_1',
+ status: 'completed',
+ role: 'assistant',
+ content: [
+ {
+ type: 'output_text',
+ text: `Response to: ${req.body.input}`,
+ annotations: [],
+ },
+ ],
},
- },
- tool_choice: 'auto',
- top_p: 1.0,
- truncation: 'disabled',
- user: null,
- metadata: {},
- output: [],
- output_text: params.input,
+ ],
+ output_text: `Response to: ${req.body.input}`,
+ status: 'completed',
usage: {
- input_tokens: 6,
- output_tokens: 10,
- total_tokens: 16,
+ input_tokens: 5,
+ output_tokens: 8,
+ total_tokens: 13,
},
- },
- sequence_number: 4,
- };
- }
+ });
+ }
+ });
+
+ return new Promise(resolve => {
+ const server = app.listen(0, () => {
+ resolve(server);
+ });
+ });
}
async function run() {
+ const server = await startMockServer();
+
await Sentry.startSpan({ op: 'function', name: 'main' }, async () => {
- const mockClient = new MockOpenAI({
+ const client = new OpenAI({
+ baseURL: `http://localhost:${server.address().port}/openai`,
apiKey: 'mock-api-key',
});
- const client = instrumentOpenAiClient(mockClient);
-
// First test: basic chat completion
await client.chat.completions.create({
model: 'gpt-3.5-turbo',
@@ -313,6 +271,8 @@ async function run() {
// Error is expected and handled
}
});
+
+ server.close();
}
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-embeddings.mjs b/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-embeddings.mjs
index 9cdb24a42da9..f6cbe1160bf5 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-embeddings.mjs
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/scenario-embeddings.mjs
@@ -1,49 +1,55 @@
-import { instrumentOpenAiClient } from '@sentry/core';
import * as Sentry from '@sentry/node';
+import express from 'express';
+import OpenAI from 'openai';
-class MockOpenAI {
- constructor(config) {
- this.apiKey = config.apiKey;
+function startMockServer() {
+ const app = express();
+ app.use(express.json());
- this.embeddings = {
- create: async params => {
- await new Promise(resolve => setTimeout(resolve, 10));
+ // Embeddings endpoint
+ app.post('/openai/embeddings', (req, res) => {
+ const { model } = req.body;
- if (params.model === 'error-model') {
- const error = new Error('Model not found');
- error.status = 404;
- error.headers = { 'x-request-id': 'mock-request-123' };
- throw error;
- }
+ // Handle error model
+ if (model === 'error-model') {
+ res.status(404).set('x-request-id', 'mock-request-123').end('Model not found');
+ return;
+ }
- return {
- object: 'list',
- data: [
- {
- object: 'embedding',
- embedding: [0.1, 0.2, 0.3],
- index: 0,
- },
- ],
- model: params.model,
- usage: {
- prompt_tokens: 10,
- total_tokens: 10,
- },
- };
+ // Return embeddings response
+ res.send({
+ object: 'list',
+ data: [
+ {
+ object: 'embedding',
+ embedding: [0.1, 0.2, 0.3],
+ index: 0,
+ },
+ ],
+ model: model,
+ usage: {
+ prompt_tokens: 10,
+ total_tokens: 10,
},
- };
- }
+ });
+ });
+
+ return new Promise(resolve => {
+ const server = app.listen(0, () => {
+ resolve(server);
+ });
+ });
}
async function run() {
+ const server = await startMockServer();
+
await Sentry.startSpan({ op: 'function', name: 'main' }, async () => {
- const mockClient = new MockOpenAI({
+ const client = new OpenAI({
+ baseURL: `http://localhost:${server.address().port}/openai`,
apiKey: 'mock-api-key',
});
- const client = instrumentOpenAiClient(mockClient);
-
// First test: embeddings API
await client.embeddings.create({
input: 'Embedding test!',
@@ -62,6 +68,8 @@ async function run() {
// Error is expected and handled
}
});
+
+ server.close();
}
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/openai/v6/test.ts b/dev-packages/node-integration-tests/suites/tracing/openai/v6/test.ts
index 4929325c6790..23520852f070 100644
--- a/dev-packages/node-integration-tests/suites/tracing/openai/v6/test.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/openai/v6/test.ts
@@ -508,7 +508,7 @@ describe('OpenAI integration (V6)', () => {
createEsmAndCjsTests(
__dirname,
'scenario-root-span.mjs',
- 'instrument.mjs',
+ 'instrument-root-span.mjs',
(createRunner, test) => {
test('it works without a wrapping span (v6)', async () => {
await createRunner()
diff --git a/dev-packages/node-integration-tests/suites/tracing/postgres/scenario-native.js b/dev-packages/node-integration-tests/suites/tracing/postgres/scenario-native.js
index 6c68f4b64562..6e7b5c60e48b 100644
--- a/dev-packages/node-integration-tests/suites/tracing/postgres/scenario-native.js
+++ b/dev-packages/node-integration-tests/suites/tracing/postgres/scenario-native.js
@@ -44,5 +44,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/postgres/scenario.js b/dev-packages/node-integration-tests/suites/tracing/postgres/scenario.js
index 4f4e2d56b39b..9d12dda3159a 100644
--- a/dev-packages/node-integration-tests/suites/tracing/postgres/scenario.js
+++ b/dev-packages/node-integration-tests/suites/tracing/postgres/scenario.js
@@ -42,5 +42,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/postgresjs/scenario.js b/dev-packages/node-integration-tests/suites/tracing/postgresjs/scenario.js
index e7cb92aabf27..f1010281f904 100644
--- a/dev-packages/node-integration-tests/suites/tracing/postgresjs/scenario.js
+++ b/dev-packages/node-integration-tests/suites/tracing/postgresjs/scenario.js
@@ -58,5 +58,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-ioredis.js b/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-ioredis.js
index 0f86c6f852a8..4571205ee339 100644
--- a/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-ioredis.js
+++ b/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-ioredis.js
@@ -42,5 +42,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-redis-4.js b/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-redis-4.js
index 31156674a654..55beaa7cf4e8 100644
--- a/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-redis-4.js
+++ b/dev-packages/node-integration-tests/suites/tracing/redis-cache/scenario-redis-4.js
@@ -42,5 +42,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/redis/scenario-ioredis.js b/dev-packages/node-integration-tests/suites/tracing/redis/scenario-ioredis.js
index 4c325c3a6c21..effedc297fa9 100644
--- a/dev-packages/node-integration-tests/suites/tracing/redis/scenario-ioredis.js
+++ b/dev-packages/node-integration-tests/suites/tracing/redis/scenario-ioredis.js
@@ -33,5 +33,4 @@ async function run() {
);
}
-// eslint-disable-next-line @typescript-eslint/no-floating-promises
run();
diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/server.js b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/server.js
index d7b54cb25c4f..4420525e85c9 100644
--- a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/server.js
+++ b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/server.js
@@ -21,7 +21,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
index dbc6b9009c49..403f69f87916 100644
--- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
+++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/no-tracing-enabled/server.js
@@ -20,7 +20,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
index dc2f49b081cf..33d9ae5180a4 100644
--- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
+++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate-0/server.js
@@ -21,7 +21,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
index 512681043d4d..53729491f064 100644
--- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
+++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampleRate/server.js
@@ -21,7 +21,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/server.js b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/server.js
index 5f616438fe90..7ae183817f43 100644
--- a/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/server.js
+++ b/dev-packages/node-integration-tests/suites/tracing/sample-rate-propagation/tracesSampler/server.js
@@ -23,7 +23,7 @@ app.use(cors());
app.get('/check', (req, res) => {
const appPort = getPortAppIsRunningOn(app);
- // eslint-disable-next-line no-undef
+
fetch(`http://localhost:${appPort}/bounce`)
.then(r => r.json())
.then(bounceRes => {
diff --git a/dev-packages/node-integration-tests/suites/tracing/vercelai/test-generate-object.ts b/dev-packages/node-integration-tests/suites/tracing/vercelai/test-generate-object.ts
index 1e87b63535ac..2e8e8711e9e9 100644
--- a/dev-packages/node-integration-tests/suites/tracing/vercelai/test-generate-object.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/vercelai/test-generate-object.ts
@@ -24,7 +24,7 @@ describe('Vercel AI integration - generateObject', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateObject',
+ 'gen_ai.operation.name': 'ai.generateObject',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
}),
@@ -38,7 +38,7 @@ describe('Vercel AI integration - generateObject', () => {
data: expect.objectContaining({
'sentry.origin': 'auto.vercelai.otel',
'sentry.op': 'gen_ai.generate_object',
- 'operation.name': 'ai.generateObject.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateObject.doGenerate',
'vercel.ai.operationId': 'ai.generateObject.doGenerate',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.model.id': 'mock-model-id',
diff --git a/dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts b/dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts
index 04ff4a0ac52c..de228303ab0e 100644
--- a/dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts
@@ -13,7 +13,14 @@ describe('Vercel AI integration', () => {
// First span - no telemetry config, should enable telemetry but not record inputs/outputs when sendDefaultPii: false
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -21,13 +28,6 @@ describe('Vercel AI integration', () => {
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
@@ -37,27 +37,26 @@ describe('Vercel AI integration', () => {
// Second span - explicitly enabled telemetry but recordInputs/recordOutputs not set, should not record when sendDefaultPii: false
expect.objectContaining({
data: {
- 'sentry.origin': 'auto.vercelai.otel',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.finish_reasons': ['stop'],
+ 'gen_ai.response.id': expect.any(String),
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.system': 'mock-provider',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.settings.maxRetries': 2,
- 'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.streaming': false,
'vercel.ai.response.finishReason': 'stop',
- 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.timestamp': expect.any(String),
- 'gen_ai.response.finish_reasons': ['stop'],
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.response.id': expect.any(String),
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.total_tokens': 30,
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
@@ -67,24 +66,25 @@ describe('Vercel AI integration', () => {
// Third span - explicit telemetry enabled, should record inputs/outputs regardless of sendDefaultPii
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.prompt': '{"prompt":"Where is the second span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the second span?"}]',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': expect.any(String),
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"Where is the second span?"}',
'vercel.ai.response.finishReason': 'stop',
- 'gen_ai.response.text': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.prompt': '{"prompt":"Where is the second span?"}',
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
@@ -94,30 +94,29 @@ describe('Vercel AI integration', () => {
// Fourth span - doGenerate for explicit telemetry enabled call
expect.objectContaining({
data: {
- 'sentry.origin': 'auto.vercelai.otel',
+ 'gen_ai.request.messages': expect.any(String),
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.finish_reasons': ['stop'],
+ 'gen_ai.response.id': expect.any(String),
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': expect.any(String),
+ 'gen_ai.system': 'mock-provider',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.settings.maxRetries': 2,
- 'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.streaming': false,
+ 'vercel.ai.prompt.format': expect.any(String),
'vercel.ai.response.finishReason': 'stop',
- 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.id': expect.any(String),
- 'gen_ai.response.text': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.prompt.format': expect.any(String),
- 'gen_ai.request.messages': expect.any(String),
- 'gen_ai.response.finish_reasons': ['stop'],
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.response.id': expect.any(String),
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.total_tokens': 30,
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
@@ -127,7 +126,14 @@ describe('Vercel AI integration', () => {
// Fifth span - tool call generateText span
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.usage.input_tokens': 15,
+ 'gen_ai.usage.output_tokens': 25,
+ 'gen_ai.usage.total_tokens': 40,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -135,13 +141,6 @@ describe('Vercel AI integration', () => {
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 15,
- 'gen_ai.usage.output_tokens': 25,
- 'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
@@ -151,16 +150,6 @@ describe('Vercel AI integration', () => {
// Sixth span - tool call doGenerate span
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
- 'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.response.finishReason': 'tool-calls',
- 'vercel.ai.response.id': expect.any(String),
- 'vercel.ai.response.model': 'mock-model-id',
- 'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.streaming': false,
'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
@@ -169,9 +158,18 @@ describe('Vercel AI integration', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'vercel.ai.pipeline.name': 'generateText.doGenerate',
+ 'vercel.ai.response.finishReason': 'tool-calls',
+ 'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
+ 'vercel.ai.response.timestamp': expect.any(String),
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
@@ -181,13 +179,13 @@ describe('Vercel AI integration', () => {
// Seventh span - tool call execution span
expect.objectContaining({
data: {
- 'vercel.ai.operationId': 'ai.toolCall',
'gen_ai.tool.call.id': 'call-1',
'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.operationId': 'ai.toolCall',
},
description: 'execute_tool getWeather',
op: 'gen_ai.execute_tool',
@@ -206,204 +204,239 @@ describe('Vercel AI integration', () => {
// First span - no telemetry config, should enable telemetry AND record inputs/outputs when sendDefaultPii: true
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.prompt': '{"prompt":"Where is the first span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the first span?"}]',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': 'First span here!',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"Where is the first span?"}',
'vercel.ai.response.finishReason': 'stop',
- 'gen_ai.response.text': 'First span here!',
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.prompt': '{"prompt":"Where is the first span?"}',
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Second span - doGenerate for first call, should also include input/output fields when sendDefaultPii: true
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
- 'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.prompt.format': 'prompt',
'gen_ai.request.messages': '[{"role":"user","content":[{"type":"text","text":"Where is the first span?"}]}]',
- 'vercel.ai.response.finishReason': 'stop',
- 'vercel.ai.response.id': expect.any(String),
- 'vercel.ai.response.model': 'mock-model-id',
- 'gen_ai.response.text': 'First span here!',
- 'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.streaming': false,
'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['stop'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': 'First span here!',
'gen_ai.system': 'mock-provider',
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'vercel.ai.pipeline.name': 'generateText.doGenerate',
+ 'vercel.ai.prompt.format': 'prompt',
+ 'vercel.ai.response.finishReason': 'stop',
+ 'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
+ 'vercel.ai.response.timestamp': expect.any(String),
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Third span - explicitly enabled telemetry, should record inputs/outputs regardless of sendDefaultPii
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.prompt': '{"prompt":"Where is the second span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the second span?"}]',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': expect.any(String),
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"Where is the second span?"}',
'vercel.ai.response.finishReason': 'stop',
- 'gen_ai.response.text': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.prompt': '{"prompt":"Where is the second span?"}',
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Fourth span - doGenerate for explicitly enabled telemetry call
expect.objectContaining({
data: {
- 'sentry.origin': 'auto.vercelai.otel',
+ 'gen_ai.request.messages': expect.any(String),
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.finish_reasons': ['stop'],
+ 'gen_ai.response.id': expect.any(String),
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': expect.any(String),
+ 'gen_ai.system': 'mock-provider',
+ 'gen_ai.usage.input_tokens': 10,
+ 'gen_ai.usage.output_tokens': 20,
+ 'gen_ai.usage.total_tokens': 30,
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.settings.maxRetries': 2,
- 'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.streaming': false,
+ 'vercel.ai.prompt.format': expect.any(String),
'vercel.ai.response.finishReason': 'stop',
- 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.id': expect.any(String),
- 'gen_ai.response.text': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.prompt.format': expect.any(String),
- 'gen_ai.request.messages': expect.any(String),
- 'gen_ai.response.finish_reasons': ['stop'],
- 'gen_ai.usage.input_tokens': 10,
- 'gen_ai.usage.output_tokens': 20,
- 'gen_ai.response.id': expect.any(String),
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.total_tokens': 30,
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Fifth span - tool call generateText span (should include prompts when sendDefaultPii: true)
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.prompt': '{"prompt":"What is the weather in San Francisco?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"What is the weather in San Francisco?"}]',
+ 'gen_ai.request.model': 'mock-model-id',
+ 'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': 'Tool call completed!',
+ 'gen_ai.response.tool_calls': expect.any(String),
+ 'gen_ai.usage.input_tokens': 15,
+ 'gen_ai.usage.output_tokens': 25,
+ 'gen_ai.usage.total_tokens': 40,
+ 'gen_ai.operation.name': 'ai.generateText',
+ 'sentry.op': 'gen_ai.invoke_agent',
+ 'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"What is the weather in San Francisco?"}',
'vercel.ai.response.finishReason': 'tool-calls',
- 'gen_ai.response.text': 'Tool call completed!',
- 'gen_ai.response.tool_calls': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.settings.maxSteps': 1,
'vercel.ai.streaming': false,
- 'gen_ai.prompt': '{"prompt":"What is the weather in San Francisco?"}',
- 'gen_ai.response.model': 'mock-model-id',
- 'gen_ai.usage.input_tokens': 15,
- 'gen_ai.usage.output_tokens': 25,
- 'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
- 'sentry.op': 'gen_ai.invoke_agent',
- 'sentry.origin': 'auto.vercelai.otel',
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Sixth span - tool call doGenerate span (should include prompts when sendDefaultPii: true)
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
- 'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.prompt.format': expect.any(String),
- 'gen_ai.request.messages': expect.any(String),
- 'vercel.ai.prompt.toolChoice': expect.any(String),
'gen_ai.request.available_tools': EXPECTED_AVAILABLE_TOOLS_JSON,
- 'vercel.ai.response.finishReason': 'tool-calls',
- 'vercel.ai.response.id': expect.any(String),
- 'vercel.ai.response.model': 'mock-model-id',
- 'gen_ai.response.text': 'Tool call completed!',
- 'vercel.ai.response.timestamp': expect.any(String),
- 'gen_ai.response.tool_calls': expect.any(String),
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.streaming': false,
+ 'gen_ai.request.messages': expect.any(String),
'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
+ 'gen_ai.response.text': 'Tool call completed!',
+ 'gen_ai.response.tool_calls': expect.any(String),
'gen_ai.system': 'mock-provider',
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'vercel.ai.pipeline.name': 'generateText.doGenerate',
+ 'vercel.ai.prompt.format': expect.any(String),
+ 'vercel.ai.prompt.toolChoice': expect.any(String),
+ 'vercel.ai.response.finishReason': 'tool-calls',
+ 'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
+ 'vercel.ai.response.timestamp': expect.any(String),
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
// Seventh span - tool call execution span
expect.objectContaining({
data: {
- 'vercel.ai.operationId': 'ai.toolCall',
'gen_ai.tool.call.id': 'call-1',
- 'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.input': expect.any(String),
+ 'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.output': expect.any(String),
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.operationId': 'ai.toolCall',
},
description: 'execute_tool getWeather',
op: 'gen_ai.execute_tool',
origin: 'auto.vercelai.otel',
status: 'ok',
+ parent_span_id: expect.any(String),
+ span_id: expect.any(String),
+ start_timestamp: expect.any(Number),
+ timestamp: expect.any(Number),
+ trace_id: expect.any(String),
}),
]),
};
@@ -427,20 +460,20 @@ describe('Vercel AI integration', () => {
spans: expect.arrayContaining([
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText',
- 'vercel.ai.pipeline.name': 'generateText',
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.settings.maxSteps': 1,
- 'vercel.ai.streaming': false,
+ 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.model': 'mock-model-id',
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText',
+ 'vercel.ai.pipeline.name': 'generateText',
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.settings.maxSteps': 1,
+ 'vercel.ai.streaming': false,
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
@@ -449,16 +482,6 @@ describe('Vercel AI integration', () => {
}),
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
- 'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.response.finishReason': 'tool-calls',
- 'vercel.ai.response.id': expect.any(String),
- 'vercel.ai.response.model': 'mock-model-id',
- 'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.streaming': false,
'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
@@ -467,9 +490,18 @@ describe('Vercel AI integration', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'vercel.ai.pipeline.name': 'generateText.doGenerate',
+ 'vercel.ai.response.finishReason': 'tool-calls',
+ 'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
+ 'vercel.ai.response.timestamp': expect.any(String),
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
@@ -478,13 +510,13 @@ describe('Vercel AI integration', () => {
}),
expect.objectContaining({
data: {
- 'vercel.ai.operationId': 'ai.toolCall',
'gen_ai.tool.call.id': 'call-1',
'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.operationId': 'ai.toolCall',
},
description: 'execute_tool getWeather',
op: 'gen_ai.execute_tool',
@@ -548,20 +580,20 @@ describe('Vercel AI integration', () => {
spans: expect.arrayContaining([
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText',
- 'vercel.ai.pipeline.name': 'generateText',
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.settings.maxSteps': 1,
- 'vercel.ai.streaming': false,
+ 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.model': 'mock-model-id',
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText',
+ 'vercel.ai.pipeline.name': 'generateText',
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.settings.maxSteps': 1,
+ 'vercel.ai.streaming': false,
},
description: 'generateText',
op: 'gen_ai.invoke_agent',
@@ -570,16 +602,6 @@ describe('Vercel AI integration', () => {
}),
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
- 'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.operationId': 'ai.generateText.doGenerate',
- 'vercel.ai.pipeline.name': 'generateText.doGenerate',
- 'vercel.ai.response.finishReason': 'tool-calls',
- 'vercel.ai.response.id': expect.any(String),
- 'vercel.ai.response.model': 'mock-model-id',
- 'vercel.ai.response.timestamp': expect.any(String),
- 'vercel.ai.settings.maxRetries': 2,
- 'vercel.ai.streaming': false,
'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
@@ -588,9 +610,18 @@ describe('Vercel AI integration', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.model.provider': 'mock-provider',
+ 'vercel.ai.operationId': 'ai.generateText.doGenerate',
+ 'vercel.ai.pipeline.name': 'generateText.doGenerate',
+ 'vercel.ai.response.finishReason': 'tool-calls',
+ 'vercel.ai.response.id': expect.any(String),
+ 'vercel.ai.response.model': 'mock-model-id',
+ 'vercel.ai.response.timestamp': expect.any(String),
+ 'vercel.ai.settings.maxRetries': 2,
+ 'vercel.ai.streaming': false,
},
description: 'generate_text mock-model-id',
op: 'gen_ai.generate_text',
@@ -599,13 +630,13 @@ describe('Vercel AI integration', () => {
}),
expect.objectContaining({
data: {
- 'vercel.ai.operationId': 'ai.toolCall',
'gen_ai.tool.call.id': 'call-1',
'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
+ 'vercel.ai.operationId': 'ai.toolCall',
},
description: 'execute_tool getWeather',
op: 'gen_ai.execute_tool',
@@ -642,7 +673,7 @@ describe('Vercel AI integration', () => {
let transactionEvent: Event | undefined;
let errorEvent: Event | undefined;
- const runner = await createRunner()
+ const runner = createRunner()
.expect({
transaction: transaction => {
transactionEvent = transaction;
diff --git a/dev-packages/node-integration-tests/suites/tracing/vercelai/v5/test.ts b/dev-packages/node-integration-tests/suites/tracing/vercelai/v5/test.ts
index 56860af76925..01aa715bdc77 100644
--- a/dev-packages/node-integration-tests/suites/tracing/vercelai/v5/test.ts
+++ b/dev-packages/node-integration-tests/suites/tracing/vercelai/v5/test.ts
@@ -13,7 +13,7 @@ describe('Vercel AI integration (V5)', () => {
// First span - no telemetry config, should enable telemetry but not record inputs/outputs when sendDefaultPii: false
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -24,7 +24,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -38,13 +38,12 @@ describe('Vercel AI integration (V5)', () => {
data: {
'sentry.origin': 'auto.vercelai.otel',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.settings.maxRetries': 2,
'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
'vercel.ai.streaming': false,
'vercel.ai.response.finishReason': 'stop',
@@ -66,7 +65,7 @@ describe('Vercel AI integration (V5)', () => {
// Third span - explicit telemetry enabled, should record inputs/outputs regardless of sendDefaultPii
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -76,11 +75,12 @@ describe('Vercel AI integration (V5)', () => {
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
'gen_ai.prompt': '{"prompt":"Where is the second span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the second span?"}]',
'gen_ai.response.model': 'mock-model-id',
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -94,13 +94,12 @@ describe('Vercel AI integration (V5)', () => {
data: {
'sentry.origin': 'auto.vercelai.otel',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.settings.maxRetries': 2,
'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
'vercel.ai.streaming': false,
'vercel.ai.response.finishReason': 'stop',
@@ -124,7 +123,7 @@ describe('Vercel AI integration (V5)', () => {
// Fifth span - tool call generateText span
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -135,7 +134,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -147,7 +146,7 @@ describe('Vercel AI integration (V5)', () => {
// Sixth span - tool call doGenerate span
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
@@ -157,7 +156,6 @@ describe('Vercel AI integration (V5)', () => {
'vercel.ai.response.timestamp': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
- 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
@@ -165,7 +163,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -181,7 +179,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.tool.call.id': 'call-1',
'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -202,11 +200,12 @@ describe('Vercel AI integration (V5)', () => {
// First span - no telemetry config, should enable telemetry AND record inputs/outputs when sendDefaultPii: true
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"Where is the first span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the first span?"}]',
'vercel.ai.response.finishReason': 'stop',
'gen_ai.response.text': 'First span here!',
'vercel.ai.settings.maxRetries': 2,
@@ -216,7 +215,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -228,7 +227,7 @@ describe('Vercel AI integration (V5)', () => {
// Second span - doGenerate for first call, should also include input/output fields when sendDefaultPii: true
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
@@ -240,7 +239,6 @@ describe('Vercel AI integration (V5)', () => {
'vercel.ai.response.timestamp': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
- 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['stop'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
@@ -248,7 +246,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -260,11 +258,12 @@ describe('Vercel AI integration (V5)', () => {
// Third span - explicitly enabled telemetry, should record inputs/outputs regardless of sendDefaultPii
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"Where is the second span?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"Where is the second span?"}]',
'vercel.ai.response.finishReason': 'stop',
'gen_ai.response.text': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
@@ -274,7 +273,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 10,
'gen_ai.usage.output_tokens': 20,
'gen_ai.usage.total_tokens': 30,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -288,13 +287,12 @@ describe('Vercel AI integration (V5)', () => {
data: {
'sentry.origin': 'auto.vercelai.otel',
'sentry.op': 'gen_ai.generate_text',
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.model.provider': 'mock-provider',
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.settings.maxRetries': 2,
'gen_ai.system': 'mock-provider',
- 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
'vercel.ai.streaming': false,
'vercel.ai.response.finishReason': 'stop',
@@ -318,13 +316,13 @@ describe('Vercel AI integration (V5)', () => {
// Fifth span - tool call generateText span (should include prompts when sendDefaultPii: true)
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
'vercel.ai.prompt': '{"prompt":"What is the weather in San Francisco?"}',
+ 'gen_ai.request.messages': '[{"role":"user","content":"What is the weather in San Francisco?"}]',
'vercel.ai.response.finishReason': 'tool-calls',
- // 'gen_ai.response.text': 'Tool call completed!',
'gen_ai.response.tool_calls': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
@@ -333,7 +331,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -345,7 +343,7 @@ describe('Vercel AI integration (V5)', () => {
// Sixth span - tool call doGenerate span (should include prompts when sendDefaultPii: true)
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
@@ -360,7 +358,6 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.response.tool_calls': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
- 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
@@ -368,7 +365,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -386,7 +383,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.tool.input': expect.any(String),
'gen_ai.tool.output': expect.any(String),
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -441,7 +438,7 @@ describe('Vercel AI integration (V5)', () => {
spans: expect.arrayContaining([
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText',
'vercel.ai.pipeline.name': 'generateText',
@@ -451,7 +448,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText',
+ 'gen_ai.operation.name': 'ai.generateText',
'sentry.op': 'gen_ai.invoke_agent',
'sentry.origin': 'auto.vercelai.otel',
'vercel.ai.response.finishReason': 'tool-calls',
@@ -462,7 +459,7 @@ describe('Vercel AI integration (V5)', () => {
}),
expect.objectContaining({
data: {
- 'vercel.ai.model.id': 'mock-model-id',
+ 'gen_ai.request.model': 'mock-model-id',
'vercel.ai.model.provider': 'mock-provider',
'vercel.ai.operationId': 'ai.generateText.doGenerate',
'vercel.ai.pipeline.name': 'generateText.doGenerate',
@@ -472,7 +469,6 @@ describe('Vercel AI integration (V5)', () => {
'vercel.ai.response.timestamp': expect.any(String),
'vercel.ai.settings.maxRetries': 2,
'vercel.ai.streaming': false,
- 'gen_ai.request.model': 'mock-model-id',
'gen_ai.response.finish_reasons': ['tool-calls'],
'gen_ai.response.id': expect.any(String),
'gen_ai.response.model': 'mock-model-id',
@@ -480,7 +476,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.usage.input_tokens': 15,
'gen_ai.usage.output_tokens': 25,
'gen_ai.usage.total_tokens': 40,
- 'operation.name': 'ai.generateText.doGenerate',
+ 'gen_ai.operation.name': 'ai.generateText.doGenerate',
'sentry.op': 'gen_ai.generate_text',
'sentry.origin': 'auto.vercelai.otel',
},
@@ -495,7 +491,7 @@ describe('Vercel AI integration (V5)', () => {
'gen_ai.tool.call.id': 'call-1',
'gen_ai.tool.name': 'getWeather',
'gen_ai.tool.type': 'function',
- 'operation.name': 'ai.toolCall',
+ 'gen_ai.operation.name': 'ai.toolCall',
'sentry.op': 'gen_ai.execute_tool',
'sentry.origin': 'auto.vercelai.otel',
},
diff --git a/package.json b/package.json
index 298e17031240..b0f32aa93a50 100644
--- a/package.json
+++ b/package.json
@@ -121,7 +121,7 @@
"deepmerge": "^4.2.2",
"downlevel-dts": "~0.11.0",
"es-check": "^7.2.1",
- "eslint": "7.32.0",
+ "eslint": "8.57.0",
"jsdom": "^21.1.2",
"lerna": "7.1.1",
"madge": "8.0.0",
diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts
index f0911eb9a440..12a0afb463bd 100644
--- a/packages/angular/src/index.ts
+++ b/packages/angular/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export type { ErrorHandlerOptions } from './errorhandler';
export * from '@sentry/browser';
diff --git a/packages/astro/src/index.client.ts b/packages/astro/src/index.client.ts
index 55a6c8d3915b..959ecfaa4d5d 100644
--- a/packages/astro/src/index.client.ts
+++ b/packages/astro/src/index.client.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/browser';
// Override the browserTracingIntegration with the custom Astro version
diff --git a/packages/astro/src/index.types.ts b/packages/astro/src/index.types.ts
index b09a1cfa09d5..2e51ab1b0f1e 100644
--- a/packages/astro/src/index.types.ts
+++ b/packages/astro/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part.
diff --git a/packages/aws-serverless/src/integration/instrumentation-aws-lambda/instrumentation.ts b/packages/aws-serverless/src/integration/instrumentation-aws-lambda/instrumentation.ts
index 1991fdc5dac4..a3809408cfe6 100644
--- a/packages/aws-serverless/src/integration/instrumentation-aws-lambda/instrumentation.ts
+++ b/packages/aws-serverless/src/integration/instrumentation-aws-lambda/instrumentation.ts
@@ -298,7 +298,6 @@ export class AwsLambdaInstrumentation extends InstrumentationBase {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/aws-serverless/test/utils.test.ts b/packages/aws-serverless/test/utils.test.ts
index 2f3516ce8e35..e77171454a6a 100644
--- a/packages/aws-serverless/test/utils.test.ts
+++ b/packages/aws-serverless/test/utils.test.ts
@@ -3,7 +3,6 @@ import { eventContextExtractor, getAwsTraceData } from '../src/utils';
const mockExtractContext = vi.fn();
vi.mock('@opentelemetry/api', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const actualApi = await vi.importActual('@opentelemetry/api');
return {
...actualApi,
diff --git a/packages/browser-utils/src/metrics/browserMetrics.ts b/packages/browser-utils/src/metrics/browserMetrics.ts
index ec7213ae4ff6..3c3dee074cb5 100644
--- a/packages/browser-utils/src/metrics/browserMetrics.ts
+++ b/packages/browser-utils/src/metrics/browserMetrics.ts
@@ -15,11 +15,11 @@ import {
import { WINDOW } from '../types';
import { trackClsAsStandaloneSpan } from './cls';
import {
- type PerformanceLongAnimationFrameTiming,
addClsInstrumentationHandler,
addLcpInstrumentationHandler,
addPerformanceInstrumentationHandler,
addTtfbInstrumentationHandler,
+ type PerformanceLongAnimationFrameTiming,
} from './instrument';
import { trackLcpAsStandaloneSpan } from './lcp';
import { resourceTimingToSpanAttributes } from './resourceTiming';
diff --git a/packages/browser/src/profiling/UIProfiler.ts b/packages/browser/src/profiling/UIProfiler.ts
index fb059b836986..fc735e871e29 100644
--- a/packages/browser/src/profiling/UIProfiler.ts
+++ b/packages/browser/src/profiling/UIProfiler.ts
@@ -1,6 +1,5 @@
-import type { Client, ContinuousProfiler, ProfileChunk, Span } from '@sentry/core';
+import type { Client, ContinuousProfiler, ProfileChunk, ProfileChunkEnvelope, Span } from '@sentry/core';
import {
- type ProfileChunkEnvelope,
createEnvelope,
debug,
dsnToString,
diff --git a/packages/browser/src/tracing/linkedTraces.ts b/packages/browser/src/tracing/linkedTraces.ts
index 330e193f80ef..3a67e1cf61ac 100644
--- a/packages/browser/src/tracing/linkedTraces.ts
+++ b/packages/browser/src/tracing/linkedTraces.ts
@@ -1,6 +1,5 @@
-import type { Client, PropagationContext, Span } from '@sentry/core';
+import type { Client, PropagationContext, Span, SpanContextData } from '@sentry/core';
import {
- type SpanContextData,
debug,
getCurrentScope,
getRootSpan,
diff --git a/packages/browser/test/profiling/UIProfiler.test.ts b/packages/browser/test/profiling/UIProfiler.test.ts
index 6872e1e1beff..7fd583f513d8 100644
--- a/packages/browser/test/profiling/UIProfiler.test.ts
+++ b/packages/browser/test/profiling/UIProfiler.test.ts
@@ -3,8 +3,8 @@
*/
import * as Sentry from '@sentry/browser';
-import { type Span, debug } from '@sentry/core';
-import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
+import { debug, type Span } from '@sentry/core';
+import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest';
import type { BrowserOptions } from '../../src/index';
function getBaseOptionsForTraceLifecycle(sendMock: Mock, enableTracing = true): BrowserOptions {
diff --git a/packages/cloudflare/src/durableobject.ts b/packages/cloudflare/src/durableobject.ts
index 64467aad9d8f..db1da6a5d172 100644
--- a/packages/cloudflare/src/durableobject.ts
+++ b/packages/cloudflare/src/durableobject.ts
@@ -1,10 +1,10 @@
/* eslint-disable @typescript-eslint/unbound-method */
import {
- type Scope,
captureException,
flush,
getClient,
isThenable,
+ type Scope,
SEMANTIC_ATTRIBUTE_SENTRY_OP,
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
startSpan,
diff --git a/packages/cloudflare/test/copy-execution-context.test.ts b/packages/cloudflare/test/copy-execution-context.test.ts
index 3ee71a10b695..670d67f2f490 100644
--- a/packages/cloudflare/test/copy-execution-context.test.ts
+++ b/packages/cloudflare/test/copy-execution-context.test.ts
@@ -1,4 +1,4 @@
-import { type Mocked, describe, expect, it, vi } from 'vitest';
+import { describe, expect, it, type Mocked, vi } from 'vitest';
import { copyExecutionContext } from '../src/utils/copyExecutionContext';
describe('Copy of the execution context', () => {
diff --git a/packages/core/src/client.ts b/packages/core/src/client.ts
index 805d8e596528..aad363905a68 100644
--- a/packages/core/src/client.ts
+++ b/packages/core/src/client.ts
@@ -44,7 +44,7 @@ import { merge } from './utils/merge';
import { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';
import { parseSampleRate } from './utils/parseSampleRate';
import { prepareEvent } from './utils/prepareEvent';
-import { type PromiseBuffer, makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';
+import { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';
import { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';
import { showSpanDropWarning } from './utils/spanUtils';
import { rejectedSyncPromise } from './utils/syncpromise';
@@ -884,13 +884,13 @@ export abstract class Client {
*/
public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;
- /*
+ /**
* Fire a hook event for envelope creation and sending. Expects to be given an envelope as the
* second argument.
*/
public emit(hook: 'beforeEnvelope', envelope: Envelope): void;
- /*
+ /**
* Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.
*/
public emit(hook: 'applyFrameMetadata', event: Event): void;
@@ -920,7 +920,7 @@ export abstract class Client {
*/
public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;
- /*
+ /**
* Fire a hook event after sending an event. Expects to be given an Event as the
* second argument.
*/
diff --git a/packages/core/src/tracing/anthropic-ai/index.ts b/packages/core/src/tracing/anthropic-ai/index.ts
index aa48a1e4c21d..d8d06efdc9e5 100644
--- a/packages/core/src/tracing/anthropic-ai/index.ts
+++ b/packages/core/src/tracing/anthropic-ai/index.ts
@@ -39,7 +39,7 @@ import type {
AnthropicAiStreamingEvent,
ContentBlock,
} from './types';
-import { handleResponseError, shouldInstrument } from './utils';
+import { handleResponseError, messagesFromParams, shouldInstrument } from './utils';
/**
* Extract request attributes from method arguments
@@ -82,10 +82,12 @@ function extractRequestAttributes(args: unknown[], methodPath: string): Record): void {
- if ('messages' in params) {
- const truncatedMessages = getTruncatedJsonString(params.messages);
+ const messages = messagesFromParams(params);
+ if (messages.length) {
+ const truncatedMessages = getTruncatedJsonString(messages);
span.setAttributes({ [GEN_AI_REQUEST_MESSAGES_ATTRIBUTE]: truncatedMessages });
}
+
if ('input' in params) {
const truncatedInput = getTruncatedJsonString(params.input);
span.setAttributes({ [GEN_AI_REQUEST_MESSAGES_ATTRIBUTE]: truncatedInput });
diff --git a/packages/core/src/tracing/anthropic-ai/utils.ts b/packages/core/src/tracing/anthropic-ai/utils.ts
index 16c85908d4f7..01f86b41adfc 100644
--- a/packages/core/src/tracing/anthropic-ai/utils.ts
+++ b/packages/core/src/tracing/anthropic-ai/utils.ts
@@ -27,3 +27,16 @@ export function handleResponseError(span: Span, response: AnthropicAiResponse):
});
}
}
+
+/**
+ * Include the system prompt in the messages list, if available
+ */
+export function messagesFromParams(params: Record): unknown[] {
+ const { system, messages } = params;
+
+ const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];
+
+ const userMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];
+
+ return [...systemMessages, ...userMessages];
+}
diff --git a/packages/core/src/tracing/openai/index.ts b/packages/core/src/tracing/openai/index.ts
index bba2ee0f5afd..c68e920daf2b 100644
--- a/packages/core/src/tracing/openai/index.ts
+++ b/packages/core/src/tracing/openai/index.ts
@@ -1,4 +1,4 @@
-import { getCurrentScope } from '../../currentScopes';
+import { getClient } from '../../currentScopes';
import { captureException } from '../../exports';
import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';
import { SPAN_STATUS_ERROR } from '../../tracing';
@@ -20,12 +20,10 @@ import {
GEN_AI_SYSTEM_ATTRIBUTE,
} from '../ai/gen-ai-attributes';
import { getTruncatedJsonString } from '../ai/utils';
-import { OPENAI_INTEGRATION_NAME } from './constants';
import { instrumentStream } from './streaming';
import type {
ChatCompletionChunk,
InstrumentedMethod,
- OpenAiIntegration,
OpenAiOptions,
OpenAiResponse,
OpenAIStream,
@@ -128,18 +126,6 @@ function addRequestAttributes(span: Span, params: Record): void
}
}
-function getOptionsFromIntegration(): OpenAiOptions {
- const scope = getCurrentScope();
- const client = scope.getClient();
- const integration = client?.getIntegrationByName(OPENAI_INTEGRATION_NAME);
- const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;
-
- return {
- recordInputs: integration?.options?.recordInputs ?? shouldRecordInputsAndOutputs,
- recordOutputs: integration?.options?.recordOutputs ?? shouldRecordInputsAndOutputs,
- };
-}
-
/**
* Instrument a method with Sentry spans
* Following Sentry AI Agents Manual Instrumentation conventions
@@ -149,10 +135,9 @@ function instrumentMethod(
originalMethod: (...args: T) => Promise,
methodPath: InstrumentedMethod,
context: unknown,
- options?: OpenAiOptions,
+ options: OpenAiOptions,
): (...args: T) => Promise {
return async function instrumentedMethod(...args: T): Promise {
- const finalOptions = options || getOptionsFromIntegration();
const requestAttributes = extractRequestAttributes(args, methodPath);
const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';
const operationName = getOperationName(methodPath);
@@ -170,8 +155,8 @@ function instrumentMethod(
},
async (span: Span) => {
try {
- if (finalOptions.recordInputs && args[0] && typeof args[0] === 'object') {
- addRequestAttributes(span, args[0] as Record);
+ if (options.recordInputs && params) {
+ addRequestAttributes(span, params);
}
const result = await originalMethod.apply(context, args);
@@ -179,7 +164,7 @@ function instrumentMethod(
return instrumentStream(
result as OpenAIStream,
span,
- finalOptions.recordOutputs ?? false,
+ options.recordOutputs ?? false,
) as unknown as R;
} catch (error) {
// For streaming requests that fail before stream creation, we still want to record
@@ -209,12 +194,12 @@ function instrumentMethod(
},
async (span: Span) => {
try {
- if (finalOptions.recordInputs && args[0] && typeof args[0] === 'object') {
- addRequestAttributes(span, args[0] as Record);
+ if (options.recordInputs && params) {
+ addRequestAttributes(span, params);
}
const result = await originalMethod.apply(context, args);
- addResponseAttributes(span, result, finalOptions.recordOutputs);
+ addResponseAttributes(span, result, options.recordOutputs);
return result;
} catch (error) {
captureException(error, {
@@ -237,7 +222,7 @@ function instrumentMethod(
/**
* Create a deep proxy for OpenAI client instrumentation
*/
-function createDeepProxy(target: T, currentPath = '', options?: OpenAiOptions): T {
+function createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {
return new Proxy(target, {
get(obj: object, prop: string): unknown {
const value = (obj as Record)[prop];
@@ -267,5 +252,13 @@ function createDeepProxy(target: T, currentPath = '', options?
* Can be used across Node.js, Cloudflare Workers, and Vercel Edge
*/
export function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {
- return createDeepProxy(client, '', options);
+ const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);
+
+ const _options = {
+ recordInputs: sendDefaultPii,
+ recordOutputs: sendDefaultPii,
+ ...options,
+ };
+
+ return createDeepProxy(client, '', _options);
}
diff --git a/packages/core/src/tracing/openai/streaming.ts b/packages/core/src/tracing/openai/streaming.ts
index 0111904ffeae..3a5634df34dd 100644
--- a/packages/core/src/tracing/openai/streaming.ts
+++ b/packages/core/src/tracing/openai/streaming.ts
@@ -8,12 +8,12 @@ import {
GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,
} from '../ai/gen-ai-attributes';
import { RESPONSE_EVENT_TYPES } from './constants';
-import type { OpenAIResponseObject } from './types';
-import {
- type ChatCompletionChunk,
- type ChatCompletionToolCall,
- type ResponseFunctionCall,
- type ResponseStreamingEvent,
+import type {
+ ChatCompletionChunk,
+ ChatCompletionToolCall,
+ OpenAIResponseObject,
+ ResponseFunctionCall,
+ ResponseStreamingEvent,
} from './types';
import {
isChatCompletionChunk,
diff --git a/packages/core/src/tracing/vercel-ai/index.ts b/packages/core/src/tracing/vercel-ai/index.ts
index f07244088ff9..62272d222fd5 100644
--- a/packages/core/src/tracing/vercel-ai/index.ts
+++ b/packages/core/src/tracing/vercel-ai/index.ts
@@ -4,18 +4,27 @@ import type { Event } from '../../types-hoist/event';
import type { Span, SpanAttributes, SpanAttributeValue, SpanJSON, SpanOrigin } from '../../types-hoist/span';
import { spanToJSON } from '../../utils/spanUtils';
import {
+ GEN_AI_OPERATION_NAME_ATTRIBUTE,
+ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE,
+ GEN_AI_REQUEST_MODEL_ATTRIBUTE,
+ GEN_AI_RESPONSE_MODEL_ATTRIBUTE,
+ GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,
GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,
GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,
+ GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,
} from '../ai/gen-ai-attributes';
-import { getTruncatedJsonString } from '../ai/utils';
import { toolCallSpanMap } from './constants';
import type { TokenSummary } from './types';
-import { accumulateTokensForParent, applyAccumulatedTokens, convertAvailableToolsToJsonString } from './utils';
+import {
+ accumulateTokensForParent,
+ applyAccumulatedTokens,
+ convertAvailableToolsToJsonString,
+ requestMessagesFromPrompt,
+} from './utils';
import type { ProviderMetadata } from './vercel-ai-attributes';
import {
AI_MODEL_ID_ATTRIBUTE,
AI_MODEL_PROVIDER_ATTRIBUTE,
- AI_PROMPT_ATTRIBUTE,
AI_PROMPT_MESSAGES_ATTRIBUTE,
AI_PROMPT_TOOLS_ATTRIBUTE,
AI_RESPONSE_OBJECT_ATTRIBUTE,
@@ -31,9 +40,7 @@ import {
AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,
AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,
AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,
- GEN_AI_RESPONSE_MODEL_ATTRIBUTE,
- GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,
- GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,
+ OPERATION_NAME_ATTRIBUTE,
} from './vercel-ai-attributes';
function addOriginToSpan(span: Span, origin: SpanOrigin): void {
@@ -131,7 +138,8 @@ function processEndedVercelAiSpan(span: SpanJSON): void {
}
// Rename AI SDK attributes to standardized gen_ai attributes
- renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, 'gen_ai.request.messages');
+ renameAttributeKey(attributes, OPERATION_NAME_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE);
+ renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_REQUEST_MESSAGES_ATTRIBUTE);
renameAttributeKey(attributes, AI_RESPONSE_TEXT_ATTRIBUTE, 'gen_ai.response.text');
renameAttributeKey(attributes, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, 'gen_ai.response.tool_calls');
renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');
@@ -141,6 +149,7 @@ function processEndedVercelAiSpan(span: SpanJSON): void {
renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, 'gen_ai.tool.output');
renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');
+ renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);
addProviderMetadataToAttributes(attributes);
@@ -203,10 +212,8 @@ function processGenerateSpan(span: Span, name: string, attributes: SpanAttribute
span.setAttribute('gen_ai.function_id', functionId);
}
- if (attributes[AI_PROMPT_ATTRIBUTE]) {
- const truncatedPrompt = getTruncatedJsonString(attributes[AI_PROMPT_ATTRIBUTE] as string | string[]);
- span.setAttribute('gen_ai.prompt', truncatedPrompt);
- }
+ requestMessagesFromPrompt(span, attributes);
+
if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {
span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);
}
diff --git a/packages/core/src/tracing/vercel-ai/utils.ts b/packages/core/src/tracing/vercel-ai/utils.ts
index 9a0b57eb16f7..bc390ccc1672 100644
--- a/packages/core/src/tracing/vercel-ai/utils.ts
+++ b/packages/core/src/tracing/vercel-ai/utils.ts
@@ -1,8 +1,14 @@
import type { TraceContext } from '../../types-hoist/context';
-import type { Span, SpanJSON } from '../../types-hoist/span';
-import { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE } from '../ai/gen-ai-attributes';
+import type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';
+import {
+ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE,
+ GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,
+ GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,
+} from '../ai/gen-ai-attributes';
+import { getTruncatedJsonString } from '../ai/utils';
import { toolCallSpanMap } from './constants';
import type { TokenSummary } from './types';
+import { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';
/**
* Accumulates token data from a span to its parent in the token accumulator map.
@@ -87,3 +93,47 @@ export function convertAvailableToolsToJsonString(tools: unknown[]): string {
});
return JSON.stringify(toolObjects);
}
+
+/**
+ * Convert the prompt string to messages array
+ */
+export function convertPromptToMessages(prompt: string): { role: string; content: string }[] {
+ try {
+ const p = JSON.parse(prompt);
+ if (!!p && typeof p === 'object') {
+ const { prompt, system } = p;
+ if (typeof prompt === 'string' || typeof system === 'string') {
+ const messages: { role: string; content: string }[] = [];
+ if (typeof system === 'string') {
+ messages.push({ role: 'system', content: system });
+ }
+ if (typeof prompt === 'string') {
+ messages.push({ role: 'user', content: prompt });
+ }
+ return messages;
+ }
+ }
+ // eslint-disable-next-line no-empty
+ } catch {}
+ return [];
+}
+
+/**
+ * Generate a request.messages JSON array from the prompt field in the
+ * invoke_agent op
+ */
+export function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {
+ if (attributes[AI_PROMPT_ATTRIBUTE]) {
+ const truncatedPrompt = getTruncatedJsonString(attributes[AI_PROMPT_ATTRIBUTE] as string | string[]);
+ span.setAttribute('gen_ai.prompt', truncatedPrompt);
+ }
+ const prompt = attributes[AI_PROMPT_ATTRIBUTE];
+ if (
+ typeof prompt === 'string' &&
+ !attributes[GEN_AI_REQUEST_MESSAGES_ATTRIBUTE] &&
+ !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]
+ ) {
+ const messages = convertPromptToMessages(prompt);
+ if (messages.length) span.setAttribute(GEN_AI_REQUEST_MESSAGES_ATTRIBUTE, getTruncatedJsonString(messages));
+ }
+}
diff --git a/packages/core/src/transports/base.ts b/packages/core/src/transports/base.ts
index 822020070b86..d85d9305bbe9 100644
--- a/packages/core/src/transports/base.ts
+++ b/packages/core/src/transports/base.ts
@@ -14,8 +14,8 @@ import {
forEachEnvelopeItem,
serializeEnvelope,
} from '../utils/envelope';
-import { type PromiseBuffer, makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';
-import { type RateLimits, isRateLimited, updateRateLimits } from '../utils/ratelimit';
+import { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';
+import { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';
export const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;
diff --git a/packages/core/test/lib/integrations/captureconsole.test.ts b/packages/core/test/lib/integrations/captureconsole.test.ts
index a7e14f6536c3..05276271e13c 100644
--- a/packages/core/test/lib/integrations/captureconsole.test.ts
+++ b/packages/core/test/lib/integrations/captureconsole.test.ts
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/unbound-method */
-import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest';
import type { Client } from '../../../src';
import * as CurrentScopes from '../../../src/currentScopes';
import * as SentryCore from '../../../src/exports';
diff --git a/packages/core/test/lib/sdk.test.ts b/packages/core/test/lib/sdk.test.ts
index 4aac159d7817..27bfa29e6a53 100644
--- a/packages/core/test/lib/sdk.test.ts
+++ b/packages/core/test/lib/sdk.test.ts
@@ -1,4 +1,4 @@
-import { type Mock, beforeEach, describe, expect, it, test, vi } from 'vitest';
+import { beforeEach, describe, expect, it, type Mock, test, vi } from 'vitest';
import type { Client } from '../../src/client';
import { getCurrentScope } from '../../src/currentScopes';
import { captureCheckIn } from '../../src/exports';
diff --git a/packages/core/test/lib/tracing/utils.test.ts b/packages/core/test/lib/tracing/utils.test.ts
index 63aba8c35529..5fe44f4199ea 100644
--- a/packages/core/test/lib/tracing/utils.test.ts
+++ b/packages/core/test/lib/tracing/utils.test.ts
@@ -52,7 +52,6 @@ describe('tracing utils', () => {
setCapturedScopesOnSpan(span, scope, isolationScope);
// Check that only isolation scope is wrapped with WeakRef
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
const spanWithScopes = span as any;
expect(spanWithScopes._sentryScope).toBe(scope); // Regular scope stored directly
expect(spanWithScopes._sentryIsolationScope).toBeInstanceOf(WeakRef); // Isolation scope wrapped
@@ -66,7 +65,7 @@ describe('tracing utils', () => {
it('falls back to direct storage when WeakRef is not available', () => {
// Temporarily disable WeakRef
const originalWeakRef = globalThis.WeakRef;
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
(globalThis as any).WeakRef = undefined;
try {
@@ -77,7 +76,6 @@ describe('tracing utils', () => {
setCapturedScopesOnSpan(span, scope, isolationScope);
// Check that both scopes are stored directly when WeakRef is not available
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
const spanWithScopes = span as any;
expect(spanWithScopes._sentryScope).toBe(scope); // Regular scope always stored directly
expect(spanWithScopes._sentryIsolationScope).toBe(isolationScope); // Isolation scope falls back to direct storage
@@ -94,7 +92,6 @@ describe('tracing utils', () => {
expect(retrieved.isolationScope).toBe(isolationScope);
} finally {
// Restore WeakRef
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
(globalThis as any).WeakRef = originalWeakRef;
}
});
@@ -108,7 +105,6 @@ describe('tracing utils', () => {
// Mock WeakRef.deref to return undefined for isolation scope (simulating garbage collection)
// Regular scope is stored directly, so it should always be available
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
const spanWithScopes = span as any;
const mockIsolationScopeWeakRef = {
deref: vi.fn().mockReturnValue(undefined),
@@ -129,7 +125,6 @@ describe('tracing utils', () => {
const scope = new Scope();
// Set up a regular scope (stored directly) and a corrupted isolation scope WeakRef
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
const spanWithScopes = span as any;
spanWithScopes._sentryScope = scope; // Regular scope stored directly
spanWithScopes._sentryIsolationScope = {
diff --git a/packages/core/test/lib/trpc.test.ts b/packages/core/test/lib/trpc.test.ts
index f67d1e53bdfd..e03614e96a83 100644
--- a/packages/core/test/lib/trpc.test.ts
+++ b/packages/core/test/lib/trpc.test.ts
@@ -1,5 +1,5 @@
import { beforeEach, describe, expect, test, vi } from 'vitest';
-import { type Client, type Span, setCurrentClient, trpcMiddleware } from '../../src';
+import { type Client, setCurrentClient, type Span, trpcMiddleware } from '../../src';
import * as currentScopes from '../../src/currentScopes';
import * as exports from '../../src/exports';
import * as tracing from '../../src/tracing';
diff --git a/packages/core/test/lib/utils/anthropic-utils.test.ts b/packages/core/test/lib/utils/anthropic-utils.test.ts
new file mode 100644
index 000000000000..0be295b85813
--- /dev/null
+++ b/packages/core/test/lib/utils/anthropic-utils.test.ts
@@ -0,0 +1,56 @@
+import { describe, expect, it } from 'vitest';
+import { messagesFromParams, shouldInstrument } from '../../../src/tracing/anthropic-ai/utils';
+
+describe('anthropic-ai-utils', () => {
+ describe('shouldInstrument', () => {
+ it('should instrument known methods', () => {
+ expect(shouldInstrument('models.get')).toBe(true);
+ });
+
+ it('should not instrument unknown methods', () => {
+ expect(shouldInstrument('models.unknown.thing')).toBe(false);
+ });
+ });
+
+ describe('messagesFromParams', () => {
+ it('includes system message in messages list', () => {
+ expect(
+ messagesFromParams({
+ messages: [{ role: 'user', content: 'hello' }],
+ system: 'You are a friendly robot awaiting a greeting.',
+ }),
+ ).toStrictEqual([
+ { role: 'system', content: 'You are a friendly robot awaiting a greeting.' },
+ { role: 'user', content: 'hello' },
+ ]);
+ });
+
+ it('includes system message along with non-array messages', () => {
+ expect(
+ messagesFromParams({
+ messages: { role: 'user', content: 'hello' },
+ system: 'You are a friendly robot awaiting a greeting.',
+ }),
+ ).toStrictEqual([
+ { role: 'system', content: 'You are a friendly robot awaiting a greeting.' },
+ { role: 'user', content: 'hello' },
+ ]);
+ });
+
+ it('includes system message if no other messages', () => {
+ expect(
+ messagesFromParams({
+ system: 'You are a friendly robot awaiting a greeting.',
+ }),
+ ).toStrictEqual([{ role: 'system', content: 'You are a friendly robot awaiting a greeting.' }]);
+ });
+
+ it('returns messages if no system message', () => {
+ expect(
+ messagesFromParams({
+ messages: [{ role: 'user', content: 'hello' }],
+ }),
+ ).toStrictEqual([{ role: 'user', content: 'hello' }]);
+ });
+ });
+});
diff --git a/packages/core/test/lib/utils/featureFlags.test.ts b/packages/core/test/lib/utils/featureFlags.test.ts
index 9775ff7ccb0b..7813452ad419 100644
--- a/packages/core/test/lib/utils/featureFlags.test.ts
+++ b/packages/core/test/lib/utils/featureFlags.test.ts
@@ -2,9 +2,9 @@ import { afterEach, describe, expect, it, vi } from 'vitest';
import { getCurrentScope } from '../../../src/currentScopes';
import { debug } from '../../../src/utils/debug-logger';
import {
- type FeatureFlag,
_INTERNAL_insertFlagToScope,
_INTERNAL_insertToFlagBuffer,
+ type FeatureFlag,
} from '../../../src/utils/featureFlags';
describe('flags', () => {
diff --git a/packages/core/test/lib/utils/vercelai-utils.test.ts b/packages/core/test/lib/utils/vercelai-utils.test.ts
new file mode 100644
index 000000000000..be329e6f5970
--- /dev/null
+++ b/packages/core/test/lib/utils/vercelai-utils.test.ts
@@ -0,0 +1,55 @@
+import { describe, expect, it } from 'vitest';
+import { convertPromptToMessages } from '../../../src/tracing/vercel-ai/utils';
+
+describe('vercel-ai-utils', () => {
+ describe('convertPromptToMessages', () => {
+ it('should convert a prompt with system to a messages array', () => {
+ expect(
+ convertPromptToMessages(
+ JSON.stringify({
+ system: 'You are a friendly robot',
+ prompt: 'Hello, robot',
+ }),
+ ),
+ ).toStrictEqual([
+ { role: 'system', content: 'You are a friendly robot' },
+ { role: 'user', content: 'Hello, robot' },
+ ]);
+ });
+
+ it('should convert a system prompt to a messages array', () => {
+ expect(
+ convertPromptToMessages(
+ JSON.stringify({
+ system: 'You are a friendly robot',
+ }),
+ ),
+ ).toStrictEqual([{ role: 'system', content: 'You are a friendly robot' }]);
+ });
+
+ it('should convert a user only prompt to a messages array', () => {
+ expect(
+ convertPromptToMessages(
+ JSON.stringify({
+ prompt: 'Hello, robot',
+ }),
+ ),
+ ).toStrictEqual([{ role: 'user', content: 'Hello, robot' }]);
+ });
+
+ it('should ignore unexpected data', () => {
+ expect(
+ convertPromptToMessages(
+ JSON.stringify({
+ randomField: 'Hello, robot',
+ nothing: 'that we know how to handle',
+ }),
+ ),
+ ).toStrictEqual([]);
+ });
+
+ it('should not break on invalid json', () => {
+ expect(convertPromptToMessages('this is not json')).toStrictEqual([]);
+ });
+ });
+});
diff --git a/packages/core/test/mocks/client.ts b/packages/core/test/mocks/client.ts
index 2b7162a112b5..d7a130bb8b63 100644
--- a/packages/core/test/mocks/client.ts
+++ b/packages/core/test/mocks/client.ts
@@ -52,7 +52,6 @@ export class TestClient extends Client {
{
type: exception.name,
value: exception.message,
- /* eslint-enable @typescript-eslint/no-unsafe-member-access */
},
],
},
diff --git a/packages/deno/test/normalize.ts b/packages/deno/test/normalize.ts
index 3edc273b75cd..d6cddaa82c98 100644
--- a/packages/deno/test/normalize.ts
+++ b/packages/deno/test/normalize.ts
@@ -72,7 +72,7 @@ function normalizeEvent(event: Event): Event {
}
if (event?.sdk?.packages) {
- for (const pkg of event?.sdk?.packages) {
+ for (const pkg of event.sdk.packages) {
if (pkg.version) {
pkg.version = '{{version}}';
}
diff --git a/packages/ember/addon/index.ts b/packages/ember/addon/index.ts
index bebd89cb09c3..2ee9a9e3728e 100644
--- a/packages/ember/addon/index.ts
+++ b/packages/ember/addon/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import { assert } from '@ember/debug';
import type Route from '@ember/routing/route';
import { getOwnConfig } from '@embroider/macros';
diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json
index 91d0bc255e3f..46ae6668207e 100644
--- a/packages/eslint-config-sdk/package.json
+++ b/packages/eslint-config-sdk/package.json
@@ -24,19 +24,19 @@
"dependencies": {
"@sentry-internal/eslint-plugin-sdk": "10.28.0",
"@sentry-internal/typescript": "10.28.0",
- "@typescript-eslint/eslint-plugin": "^5.48.0",
- "@typescript-eslint/parser": "^5.48.0",
- "eslint-config-prettier": "^6.11.0",
- "eslint-plugin-deprecation": "^1.5.0",
- "eslint-plugin-import": "^2.22.0",
- "eslint-plugin-jsdoc": "^30.0.3",
- "eslint-plugin-simple-import-sort": "^6.0.0"
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
+ "@typescript-eslint/parser": "^5.62.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-deprecation": "^3.0.0",
+ "eslint-plugin-import": "^2.32.0",
+ "eslint-plugin-jsdoc": "^50.6.1",
+ "eslint-plugin-simple-import-sort": "^12.1.1"
},
"peerDependencies": {
"eslint": ">=5"
},
"devDependencies": {
- "eslint": "7.32.0"
+ "eslint": "8.57.0"
},
"scripts": {
"clean": "yarn rimraf sentry-internal-eslint-config-sdk-*.tgz",
diff --git a/packages/gatsby/src/index.ts b/packages/gatsby/src/index.ts
index 7c603d040693..2299b46b7d64 100644
--- a/packages/gatsby/src/index.ts
+++ b/packages/gatsby/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/react';
export { init } from './sdk';
diff --git a/packages/google-cloud-serverless/test/gcpfunction/cloud_event.test.ts b/packages/google-cloud-serverless/test/gcpfunction/cloud_event.test.ts
index 8e7d80ee95b0..e0dd8685b41d 100644
--- a/packages/google-cloud-serverless/test/gcpfunction/cloud_event.test.ts
+++ b/packages/google-cloud-serverless/test/gcpfunction/cloud_event.test.ts
@@ -16,7 +16,6 @@ const mockSpan = {
};
vi.mock('@sentry/node', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/google-cloud-serverless/test/gcpfunction/events.test.ts b/packages/google-cloud-serverless/test/gcpfunction/events.test.ts
index 0dc7198ccdcf..0c565a55ba2a 100644
--- a/packages/google-cloud-serverless/test/gcpfunction/events.test.ts
+++ b/packages/google-cloud-serverless/test/gcpfunction/events.test.ts
@@ -17,7 +17,6 @@ const mockSpan = {
};
vi.mock('@sentry/node', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/google-cloud-serverless/test/gcpfunction/http.test.ts b/packages/google-cloud-serverless/test/gcpfunction/http.test.ts
index ce327c79cd54..56781f6a8190 100644
--- a/packages/google-cloud-serverless/test/gcpfunction/http.test.ts
+++ b/packages/google-cloud-serverless/test/gcpfunction/http.test.ts
@@ -1,6 +1,6 @@
import type { Integration } from '@sentry/core';
import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core';
-import { type MockInstance, beforeEach, describe, expect, test, vi } from 'vitest';
+import { beforeEach, describe, expect, type MockInstance, test, vi } from 'vitest';
import type { HttpFunction, Request, Response } from '../../src/gcpfunction/general';
import { wrapHttpFunction } from '../../src/gcpfunction/http';
import { init } from '../../src/sdk';
@@ -19,7 +19,6 @@ const mockSpan = {
};
vi.mock('@sentry/node', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/google-cloud-serverless/test/integrations/google-cloud-http.test.ts b/packages/google-cloud-serverless/test/integrations/google-cloud-http.test.ts
index ce9ccee0a4ea..f569a6980158 100644
--- a/packages/google-cloud-serverless/test/integrations/google-cloud-http.test.ts
+++ b/packages/google-cloud-serverless/test/integrations/google-cloud-http.test.ts
@@ -13,7 +13,6 @@ const mockSpanEnd = vi.fn();
const mockStartInactiveSpan = vi.fn(spanArgs => ({ ...spanArgs }));
vi.mock('@sentry/node', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/google-cloud-serverless/test/sdk.test.ts b/packages/google-cloud-serverless/test/sdk.test.ts
index a98cd8af47e6..5b41bc4abb21 100644
--- a/packages/google-cloud-serverless/test/sdk.test.ts
+++ b/packages/google-cloud-serverless/test/sdk.test.ts
@@ -4,7 +4,6 @@ import { init } from '../src/sdk';
const mockInit = vi.fn();
vi.mock('@sentry/node', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('@sentry/node');
return {
...original,
diff --git a/packages/nestjs/src/index.ts b/packages/nestjs/src/index.ts
index f22ce71ea89d..b96fb4c5390a 100644
--- a/packages/nestjs/src/index.ts
+++ b/packages/nestjs/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/node';
export { nestIntegration } from './integrations/nest';
diff --git a/packages/nextjs/src/client/index.ts b/packages/nextjs/src/client/index.ts
index 9cc8d3b10bfe..07d1ee5c4e84 100644
--- a/packages/nextjs/src/client/index.ts
+++ b/packages/nextjs/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import type { Client, EventProcessor, Integration } from '@sentry/core';
import { addEventProcessor, applySdkMetadata, consoleSandbox, getGlobalScope, GLOBAL_OBJ } from '@sentry/core';
import type { BrowserOptions } from '@sentry/react';
diff --git a/packages/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts b/packages/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts
index 6f8b4eb96603..e8cde6e94baf 100644
--- a/packages/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts
+++ b/packages/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts
@@ -1,5 +1,5 @@
import { SEMATTRS_HTTP_TARGET } from '@opentelemetry/semantic-conventions';
-import { type Span, type SpanAttributes, GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
+import { GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, type Span, type SpanAttributes } from '@sentry/core';
import { isSentryRequestSpan } from '@sentry/opentelemetry';
import { ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';
import { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';
diff --git a/packages/nextjs/src/config/webpack.ts b/packages/nextjs/src/config/webpack.ts
index df32c31f392e..3b4eae22898f 100644
--- a/packages/nextjs/src/config/webpack.ts
+++ b/packages/nextjs/src/config/webpack.ts
@@ -326,10 +326,7 @@ export function constructWebpackConfigFunction({
if (appDirPath) {
const hasGlobalErrorFile = pageExtensions
.map(extension => `global-error.${extension}`)
- .some(
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- globalErrorFile => fs.existsSync(path.join(appDirPath, globalErrorFile)),
- );
+ .some(globalErrorFile => fs.existsSync(path.join(appDirPath, globalErrorFile)));
if (
!hasGlobalErrorFile &&
diff --git a/packages/nextjs/src/edge/index.ts b/packages/nextjs/src/edge/index.ts
index cefec05dcfe5..27d42f616727 100644
--- a/packages/nextjs/src/edge/index.ts
+++ b/packages/nextjs/src/edge/index.ts
@@ -1,7 +1,10 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import { context } from '@opentelemetry/api';
import {
- type EventProcessor,
applySdkMetadata,
+ type EventProcessor,
getCapturedScopesOnSpan,
getCurrentScope,
getGlobalScope,
diff --git a/packages/nextjs/src/index.types.ts b/packages/nextjs/src/index.types.ts
index d982ebbc7559..7c92fecd7834 100644
--- a/packages/nextjs/src/index.types.ts
+++ b/packages/nextjs/src/index.types.ts
@@ -1,4 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part. Some of the exports collide,
diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts
index ca387d752a1d..bc5372274ad6 100644
--- a/packages/nextjs/src/server/index.ts
+++ b/packages/nextjs/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import { context } from '@opentelemetry/api';
import {
ATTR_HTTP_REQUEST_METHOD,
diff --git a/packages/nextjs/test/config/mocks.ts b/packages/nextjs/test/config/mocks.ts
index 0e9c48146585..e4b2520aebe1 100644
--- a/packages/nextjs/test/config/mocks.ts
+++ b/packages/nextjs/test/config/mocks.ts
@@ -15,7 +15,6 @@ vi.mock('os');
// built-in, though, which jest itself uses, otherwise let it do the normal thing. Storing the real version of the
// function also lets us restore the original when we do want to test
// `getUserConfigFile()`.
-// eslint-disable-next-line @typescript-eslint/consistent-type-imports
const fsReal = await vi.importActual('fs');
export const realExistsSync = fsReal.existsSync;
export const mockExistsSync = (path: fs.PathLike): ReturnType => {
@@ -36,7 +35,6 @@ export const exitsSync = vi.spyOn(fs, 'existsSync').mockImplementation(mockExist
// Make it so that all temporary folders, either created directly by tests or by the code they're testing, will go into
// one spot that we know about, which we can then clean up when we're done
-// eslint-disable-next-line @typescript-eslint/consistent-type-imports
const osReal = await vi.importActual('os');
const realTmpdir = osReal.tmpdir;
diff --git a/packages/node-core/src/integrations/anr/index.ts b/packages/node-core/src/integrations/anr/index.ts
index 0d8c4f14a53d..e33c92a1eb3b 100644
--- a/packages/node-core/src/integrations/anr/index.ts
+++ b/packages/node-core/src/integrations/anr/index.ts
@@ -265,7 +265,17 @@ async function _startWorker(
};
}
+/**
+ * @see {@link disableBlockDetectionForCallback}
+ *
+ * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.
+ */
export function disableAnrDetectionForCallback(callback: () => T): T;
+/**
+ * @see {@link disableBlockDetectionForCallback}
+ *
+ * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.
+ */
export function disableAnrDetectionForCallback(callback: () => Promise): Promise;
/**
* Temporarily disables ANR detection for the duration of a callback function.
diff --git a/packages/node-core/src/integrations/pino.ts b/packages/node-core/src/integrations/pino.ts
index dda9693f90f2..f20d4bae4098 100644
--- a/packages/node-core/src/integrations/pino.ts
+++ b/packages/node-core/src/integrations/pino.ts
@@ -134,6 +134,7 @@ const _pinoIntegration = defineIntegration((userOptions: DeepPartial = {
@@ -142,7 +143,7 @@ const _pinoIntegration = defineIntegration((userOptions: DeepPartial {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('node:os');
return {
...original,
diff --git a/packages/node-core/test/integrations/contextlines.test.ts b/packages/node-core/test/integrations/contextlines.test.ts
index 332cd9b2e51e..ccb963723d39 100644
--- a/packages/node-core/test/integrations/contextlines.test.ts
+++ b/packages/node-core/test/integrations/contextlines.test.ts
@@ -12,7 +12,6 @@ import { defaultStackParser } from '../../src/sdk/api';
import { getError } from '../helpers/error';
vi.mock('node:fs', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('node:fs');
return {
...original,
diff --git a/packages/node-core/test/integrations/spotlight.test.ts b/packages/node-core/test/integrations/spotlight.test.ts
index 6d8e6b0bcfc2..1e257e887da5 100644
--- a/packages/node-core/test/integrations/spotlight.test.ts
+++ b/packages/node-core/test/integrations/spotlight.test.ts
@@ -7,7 +7,6 @@ import { NodeClient } from '../../src/sdk/client';
import { getDefaultNodeClientOptions } from '../helpers/getDefaultNodeClientOptions';
vi.mock('node:http', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('node:http');
return {
...original,
diff --git a/packages/node-core/test/sdk/init.test.ts b/packages/node-core/test/sdk/init.test.ts
index 1332b89abcd6..d5f150f03a59 100644
--- a/packages/node-core/test/sdk/init.test.ts
+++ b/packages/node-core/test/sdk/init.test.ts
@@ -1,7 +1,7 @@
import type { Integration } from '@sentry/core';
import { debug, SDK_VERSION } from '@sentry/core';
import * as SentryOpentelemetry from '@sentry/opentelemetry';
-import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest';
import { getClient } from '../../src/';
import { init, validateOpenTelemetrySetup } from '../../src/sdk';
import { NodeClient } from '../../src/sdk/client';
diff --git a/packages/node-core/test/transports/http.test.ts b/packages/node-core/test/transports/http.test.ts
index e33bcb542bbd..ab766739c59c 100644
--- a/packages/node-core/test/transports/http.test.ts
+++ b/packages/node-core/test/transports/http.test.ts
@@ -7,13 +7,12 @@ import {
serializeEnvelope,
} from '@sentry/core';
import * as http from 'http';
-import { type Mock, afterEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, describe, expect, it, type Mock, vi } from 'vitest';
import { createGunzip } from 'zlib';
import * as httpProxyAgent from '../../src/proxy';
import { makeNodeTransport } from '../../src/transports';
vi.mock('@sentry/core', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const actualCore = await vi.importActual('@sentry/core');
return {
...actualCore,
@@ -22,7 +21,6 @@ vi.mock('@sentry/core', async () => {
});
vi.mock('node:http', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const original = await vi.importActual('node:http');
return {
...original,
diff --git a/packages/node-core/test/transports/https.test.ts b/packages/node-core/test/transports/https.test.ts
index ec9fc0aa8204..95e807c4e1eb 100644
--- a/packages/node-core/test/transports/https.test.ts
+++ b/packages/node-core/test/transports/https.test.ts
@@ -2,14 +2,13 @@ import type { EventEnvelope, EventItem } from '@sentry/core';
import { createEnvelope, createTransport, serializeEnvelope } from '@sentry/core';
import * as http from 'http';
import * as https from 'https';
-import { type Mock, afterEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, describe, expect, it, type Mock, vi } from 'vitest';
import * as httpProxyAgent from '../../src/proxy';
import { makeNodeTransport } from '../../src/transports';
import type { HTTPModule, HTTPModuleRequestIncomingMessage } from '../../src/transports/http-module';
import testServerCerts from './test-server-certs';
vi.mock('@sentry/core', async () => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-imports
const actualCore = await vi.importActual('@sentry/core');
return {
...actualCore,
diff --git a/packages/node/src/integrations/http.ts b/packages/node/src/integrations/http.ts
index 3160898e0827..e6c48a6bd550 100644
--- a/packages/node/src/integrations/http.ts
+++ b/packages/node/src/integrations/http.ts
@@ -4,9 +4,8 @@ import type { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-h
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
import type { Span } from '@sentry/core';
import { defineIntegration, getClient, hasSpansEnabled } from '@sentry/core';
-import type { HTTPModuleRequestIncomingMessage, NodeClient } from '@sentry/node-core';
+import type { HTTPModuleRequestIncomingMessage, NodeClient, SentryHttpInstrumentationOptions } from '@sentry/node-core';
import {
- type SentryHttpInstrumentationOptions,
addOriginToSpan,
generateInstrumentOnce,
getRequestUrl,
diff --git a/packages/node/src/integrations/tracing/amqplib.ts b/packages/node/src/integrations/tracing/amqplib.ts
index bbbdb0b4ae71..7b4ac259add5 100644
--- a/packages/node/src/integrations/tracing/amqplib.ts
+++ b/packages/node/src/integrations/tracing/amqplib.ts
@@ -1,5 +1,5 @@
import type { Span } from '@opentelemetry/api';
-import { type AmqplibInstrumentationConfig, AmqplibInstrumentation } from '@opentelemetry/instrumentation-amqplib';
+import { AmqplibInstrumentation, type AmqplibInstrumentationConfig } from '@opentelemetry/instrumentation-amqplib';
import type { IntegrationFn } from '@sentry/core';
import { defineIntegration } from '@sentry/core';
import { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';
diff --git a/packages/node/src/integrations/tracing/anthropic-ai/instrumentation.ts b/packages/node/src/integrations/tracing/anthropic-ai/instrumentation.ts
index 09cfd7e33713..4fc96aa5ea92 100644
--- a/packages/node/src/integrations/tracing/anthropic-ai/instrumentation.ts
+++ b/packages/node/src/integrations/tracing/anthropic-ai/instrumentation.ts
@@ -1,7 +1,7 @@
import {
+ InstrumentationBase,
type InstrumentationConfig,
type InstrumentationModuleDefinition,
- InstrumentationBase,
InstrumentationNodeModuleDefinition,
} from '@opentelemetry/instrumentation';
import type { AnthropicAiClient, AnthropicAiOptions } from '@sentry/core';
diff --git a/packages/node/src/integrations/tracing/fastify/fastify-otel/index.js b/packages/node/src/integrations/tracing/fastify/fastify-otel/index.js
index 8cbc4234b06b..a3021cba20e0 100644
--- a/packages/node/src/integrations/tracing/fastify/fastify-otel/index.js
+++ b/packages/node/src/integrations/tracing/fastify/fastify-otel/index.js
@@ -33,6 +33,7 @@ SOFTWARE.
/* eslint-disable jsdoc/require-jsdoc */
/* eslint-disable max-lines */
/* eslint-disable no-param-reassign */
+/* eslint-disable import/named */
import dc from 'node:diagnostics_channel';
import { context, diag, propagation, SpanStatusCode, trace } from '@opentelemetry/api';
import { getRPCMetadata, RPCType } from '@opentelemetry/core';
diff --git a/packages/node/src/integrations/tracing/fastify/index.ts b/packages/node/src/integrations/tracing/fastify/index.ts
index 0ad069ea1f4e..c777fa20136d 100644
--- a/packages/node/src/integrations/tracing/fastify/index.ts
+++ b/packages/node/src/integrations/tracing/fastify/index.ts
@@ -262,7 +262,6 @@ export function setupFastifyErrorHandler(fastify: FastifyInstance, options?: Par
},
);
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
fastify.register(plugin);
}
diff --git a/packages/node/src/integrations/tracing/fastify/v3/utils.ts b/packages/node/src/integrations/tracing/fastify/v3/utils.ts
index 0e30c5f0bd07..41f4a706b038 100644
--- a/packages/node/src/integrations/tracing/fastify/v3/utils.ts
+++ b/packages/node/src/integrations/tracing/fastify/v3/utils.ts
@@ -19,7 +19,7 @@
* limitations under the License.
*/
-import { type Attributes, type Span, type Tracer, SpanStatusCode } from '@opentelemetry/api';
+import { type Attributes, type Span, SpanStatusCode, type Tracer } from '@opentelemetry/api';
import { spanRequestSymbol } from './constants';
import type { PluginFastifyReply } from './internal-types';
@@ -41,7 +41,6 @@ export function startSpan(
const spans: Span[] = reply[spanRequestSymbol] || [];
spans.push(span);
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
Object.defineProperty(reply, spanRequestSymbol, {
enumerable: false,
configurable: true,
diff --git a/packages/node/src/integrations/tracing/firebase/firebase.ts b/packages/node/src/integrations/tracing/firebase/firebase.ts
index ceb521d54fa3..13eb65c42568 100644
--- a/packages/node/src/integrations/tracing/firebase/firebase.ts
+++ b/packages/node/src/integrations/tracing/firebase/firebase.ts
@@ -1,7 +1,7 @@
import type { IntegrationFn } from '@sentry/core';
import { captureException, defineIntegration, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';
import { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';
-import { type FirebaseInstrumentationConfig, FirebaseInstrumentation } from './otel';
+import { FirebaseInstrumentation, type FirebaseInstrumentationConfig } from './otel';
const INTEGRATION_NAME = 'Firebase';
diff --git a/packages/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts b/packages/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts
index 724005e6f9ed..bd55dc708315 100644
--- a/packages/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts
+++ b/packages/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts
@@ -1,4 +1,4 @@
-import { type InstrumentationNodeModuleDefinition, InstrumentationBase } from '@opentelemetry/instrumentation';
+import { InstrumentationBase, type InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';
import { SDK_VERSION } from '@sentry/core';
import { patchFirestore } from './patches/firestore';
import { patchFunctions } from './patches/functions';
diff --git a/packages/node/src/integrations/tracing/firebase/otel/patches/firestore.ts b/packages/node/src/integrations/tracing/firebase/otel/patches/firestore.ts
index cc28aded8e8c..43cf61917e21 100644
--- a/packages/node/src/integrations/tracing/firebase/otel/patches/firestore.ts
+++ b/packages/node/src/integrations/tracing/firebase/otel/patches/firestore.ts
@@ -55,7 +55,6 @@ export function patchFirestore(
unwrap: ShimmerUnwrap,
config: FirebaseInstrumentationConfig,
): InstrumentationNodeModuleDefinition {
- // eslint-disable-next-line @typescript-eslint/no-empty-function
const defaultFirestoreSpanCreationHook: FirestoreSpanCreationHook = () => {};
let firestoreSpanCreationHook: FirestoreSpanCreationHook = defaultFirestoreSpanCreationHook;
@@ -131,7 +130,6 @@ function unwrapMethods(
for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if (isWrapped(moduleExports[method])) {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
unwrap(moduleExports, method);
}
}
diff --git a/packages/node/src/integrations/tracing/google-genai/instrumentation.ts b/packages/node/src/integrations/tracing/google-genai/instrumentation.ts
index 194e5bf2df70..af434a06503a 100644
--- a/packages/node/src/integrations/tracing/google-genai/instrumentation.ts
+++ b/packages/node/src/integrations/tracing/google-genai/instrumentation.ts
@@ -1,6 +1,5 @@
-import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
+import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
import {
- type InstrumentationModuleDefinition,
InstrumentationBase,
InstrumentationNodeModuleDefinition,
InstrumentationNodeModuleFile,
diff --git a/packages/node/src/integrations/tracing/hapi/index.ts b/packages/node/src/integrations/tracing/hapi/index.ts
index a8a64c0b0714..876f130c65b4 100644
--- a/packages/node/src/integrations/tracing/hapi/index.ts
+++ b/packages/node/src/integrations/tracing/hapi/index.ts
@@ -119,7 +119,6 @@ export async function setupHapiErrorHandler(server: Server): Promise {
});
}
- // eslint-disable-next-line @typescript-eslint/unbound-method
ensureIsWrapped(server.register, 'hapi');
}
diff --git a/packages/node/src/integrations/tracing/langchain/instrumentation.ts b/packages/node/src/integrations/tracing/langchain/instrumentation.ts
index 8d5c42111f3d..efa487ddce4f 100644
--- a/packages/node/src/integrations/tracing/langchain/instrumentation.ts
+++ b/packages/node/src/integrations/tracing/langchain/instrumentation.ts
@@ -1,7 +1,7 @@
import {
+ InstrumentationBase,
type InstrumentationConfig,
type InstrumentationModuleDefinition,
- InstrumentationBase,
InstrumentationNodeModuleDefinition,
InstrumentationNodeModuleFile,
} from '@opentelemetry/instrumentation';
diff --git a/packages/node/src/integrations/tracing/langgraph/instrumentation.ts b/packages/node/src/integrations/tracing/langgraph/instrumentation.ts
index ca1406e3e493..d275e1b9d39b 100644
--- a/packages/node/src/integrations/tracing/langgraph/instrumentation.ts
+++ b/packages/node/src/integrations/tracing/langgraph/instrumentation.ts
@@ -1,7 +1,7 @@
import {
+ InstrumentationBase,
type InstrumentationConfig,
type InstrumentationModuleDefinition,
- InstrumentationBase,
InstrumentationNodeModuleDefinition,
InstrumentationNodeModuleFile,
} from '@opentelemetry/instrumentation';
@@ -63,9 +63,7 @@ export class SentryLangGraphInstrumentation extends InstrumentationBase(
OPENAI_INTEGRATION_NAME,
- () => new SentryOpenAiInstrumentation({}),
+ options => new SentryOpenAiInstrumentation(options),
);
const _openAiIntegration = ((options: OpenAiOptions = {}) => {
return {
name: OPENAI_INTEGRATION_NAME,
- options,
setupOnce() {
- instrumentOpenAi();
+ instrumentOpenAi(options);
},
};
}) satisfies IntegrationFn;
diff --git a/packages/node/src/integrations/tracing/openai/instrumentation.ts b/packages/node/src/integrations/tracing/openai/instrumentation.ts
index b1a577f9a5f4..42ed7faf71e3 100644
--- a/packages/node/src/integrations/tracing/openai/instrumentation.ts
+++ b/packages/node/src/integrations/tracing/openai/instrumentation.ts
@@ -1,7 +1,7 @@
import {
+ InstrumentationBase,
type InstrumentationConfig,
type InstrumentationModuleDefinition,
- InstrumentationBase,
InstrumentationNodeModuleDefinition,
} from '@opentelemetry/instrumentation';
import type { Integration, OpenAiClient, OpenAiOptions } from '@sentry/core';
@@ -19,6 +19,8 @@ export interface OpenAiIntegration extends Integration {
options: OpenAiOptions;
}
+type OpenAiInstrumentationOptions = InstrumentationConfig & OpenAiOptions;
+
/**
* Represents the patched shape of the OpenAI module export.
*/
@@ -28,23 +30,11 @@ interface PatchedModuleExports {
AzureOpenAI?: abstract new (...args: unknown[]) => OpenAiClient;
}
-/**
- * Determines telemetry recording settings.
- */
-function determineRecordingSettings(
- integrationOptions: OpenAiOptions | undefined,
- defaultEnabled: boolean,
-): { recordInputs: boolean; recordOutputs: boolean } {
- const recordInputs = integrationOptions?.recordInputs ?? defaultEnabled;
- const recordOutputs = integrationOptions?.recordOutputs ?? defaultEnabled;
- return { recordInputs, recordOutputs };
-}
-
/**
* Sentry OpenAI instrumentation using OpenTelemetry.
*/
-export class SentryOpenAiInstrumentation extends InstrumentationBase {
- public constructor(config: InstrumentationConfig = {}) {
+export class SentryOpenAiInstrumentation extends InstrumentationBase {
+ public constructor(config: OpenAiInstrumentationOptions = {}) {
super('@sentry/instrumentation-openai', SDK_VERSION, config);
}
@@ -75,6 +65,8 @@ export class SentryOpenAiInstrumentation extends InstrumentationBase(OPENAI_INTEGRATION_NAME);
- const integrationOpts = integration?.options;
const defaultPii = Boolean(client?.getOptions().sendDefaultPii);
- const { recordInputs, recordOutputs } = determineRecordingSettings(integrationOpts, defaultPii);
+ const recordInputs = config.recordInputs ?? defaultPii;
+ const recordOutputs = config.recordOutputs ?? defaultPii;
return instrumentOpenAiClient(instance as OpenAiClient, {
recordInputs,
diff --git a/packages/node/src/integrations/tracing/vercelai/index.ts b/packages/node/src/integrations/tracing/vercelai/index.ts
index 5588384e22c4..a0b3f3126d01 100644
--- a/packages/node/src/integrations/tracing/vercelai/index.ts
+++ b/packages/node/src/integrations/tracing/vercelai/index.ts
@@ -1,6 +1,6 @@
import type { Client, IntegrationFn } from '@sentry/core';
import { addVercelAiProcessors, defineIntegration } from '@sentry/core';
-import { type modulesIntegration, generateInstrumentOnce } from '@sentry/node-core';
+import { generateInstrumentOnce, type modulesIntegration } from '@sentry/node-core';
import { INTEGRATION_NAME } from './constants';
import { SentryVercelAiInstrumentation } from './instrumentation';
import type { VercelAiOptions } from './types';
diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts
index 67de29821537..9eec5d752371 100644
--- a/packages/node/src/sdk/initOtel.ts
+++ b/packages/node/src/sdk/initOtel.ts
@@ -9,8 +9,8 @@ import {
} from '@opentelemetry/semantic-conventions';
import { debug as coreDebug, SDK_VERSION } from '@sentry/core';
import {
- type NodeClient,
initializeEsmLoader,
+ type NodeClient,
SentryContextManager,
setupOpenTelemetryLogger,
} from '@sentry/node-core';
diff --git a/packages/node/test/cron.test.ts b/packages/node/test/cron.test.ts
index efa146b90f20..bf1e83d315e5 100644
--- a/packages/node/test/cron.test.ts
+++ b/packages/node/test/cron.test.ts
@@ -1,5 +1,5 @@
import * as SentryCore from '@sentry/core';
-import { type MockInstance, afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
+import { afterEach, beforeEach, describe, expect, type MockInstance, test, vi } from 'vitest';
import { cron } from '../src';
import type { CronJob, CronJobParams } from '../src/cron/cron';
import type { NodeCron, NodeCronOptions } from '../src/cron/node-cron';
diff --git a/packages/node/test/helpers/mockSdkInit.ts b/packages/node/test/helpers/mockSdkInit.ts
index 8f8be9e8af68..9163943bbeb5 100644
--- a/packages/node/test/helpers/mockSdkInit.ts
+++ b/packages/node/test/helpers/mockSdkInit.ts
@@ -1,5 +1,5 @@
import { context, propagation, ProxyTracerProvider, trace } from '@opentelemetry/api';
-import { type SpanProcessor, BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
+import { BasicTracerProvider, type SpanProcessor } from '@opentelemetry/sdk-trace-base';
import { getClient, getCurrentScope, getGlobalScope, getIsolationScope } from '@sentry/core';
import { SentrySpanProcessor } from '@sentry/opentelemetry';
import type { NodeClient } from '../../src';
diff --git a/packages/node/test/integrations/tracing/graphql.test.ts b/packages/node/test/integrations/tracing/graphql.test.ts
index 925aed91b4ac..e8e8ce3e6e0b 100644
--- a/packages/node/test/integrations/tracing/graphql.test.ts
+++ b/packages/node/test/integrations/tracing/graphql.test.ts
@@ -1,6 +1,6 @@
import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';
import { INSTRUMENTED } from '@sentry/node-core';
-import { type MockInstance, beforeEach, describe, expect, it, vi } from 'vitest';
+import { beforeEach, describe, expect, it, type MockInstance, vi } from 'vitest';
import { graphqlIntegration, instrumentGraphql } from '../../../src/integrations/tracing/graphql';
vi.mock('@opentelemetry/instrumentation-graphql');
diff --git a/packages/node/test/integrations/tracing/koa.test.ts b/packages/node/test/integrations/tracing/koa.test.ts
index 39fe81caef90..74d10c344d95 100644
--- a/packages/node/test/integrations/tracing/koa.test.ts
+++ b/packages/node/test/integrations/tracing/koa.test.ts
@@ -1,6 +1,6 @@
import { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';
import { INSTRUMENTED } from '@sentry/node-core';
-import { type MockInstance, beforeEach, describe, expect, it, vi } from 'vitest';
+import { beforeEach, describe, expect, it, type MockInstance, vi } from 'vitest';
import { instrumentKoa, koaIntegration } from '../../../src/integrations/tracing/koa';
vi.mock('@opentelemetry/instrumentation-koa');
diff --git a/packages/node/test/integrations/tracing/mongo.test.ts b/packages/node/test/integrations/tracing/mongo.test.ts
index 7710a4ad8721..34f97a84382f 100644
--- a/packages/node/test/integrations/tracing/mongo.test.ts
+++ b/packages/node/test/integrations/tracing/mongo.test.ts
@@ -1,6 +1,6 @@
import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';
import { INSTRUMENTED } from '@sentry/node-core';
-import { type MockInstance, beforeEach, describe, expect, it, vi } from 'vitest';
+import { beforeEach, describe, expect, it, type MockInstance, vi } from 'vitest';
import {
_defaultDbStatementSerializer,
instrumentMongo,
diff --git a/packages/node/test/sdk/init.test.ts b/packages/node/test/sdk/init.test.ts
index da6680fc622f..a6a76a4439bd 100644
--- a/packages/node/test/sdk/init.test.ts
+++ b/packages/node/test/sdk/init.test.ts
@@ -1,7 +1,7 @@
import type { Integration } from '@sentry/core';
import { debug, SDK_VERSION } from '@sentry/core';
import * as SentryOpentelemetry from '@sentry/opentelemetry';
-import { type Mock, type MockInstance, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, beforeEach, describe, expect, it, type Mock, type MockInstance, vi } from 'vitest';
import { getClient, NodeClient, validateOpenTelemetrySetup } from '../../src/';
import * as auto from '../../src/integrations/tracing';
import { init } from '../../src/sdk';
diff --git a/packages/nuxt/src/client/index.ts b/packages/nuxt/src/client/index.ts
index d476348ed937..de46a448058a 100644
--- a/packages/nuxt/src/client/index.ts
+++ b/packages/nuxt/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/vue';
export { init } from './sdk';
diff --git a/packages/nuxt/src/index.types.ts b/packages/nuxt/src/index.types.ts
index 7abb16d197e3..7109e7ad9c78 100644
--- a/packages/nuxt/src/index.types.ts
+++ b/packages/nuxt/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
import type { Client, Integration, Options, StackParser } from '@sentry/core';
diff --git a/packages/nuxt/src/runtime/hooks/wrapMiddlewareHandler.ts b/packages/nuxt/src/runtime/hooks/wrapMiddlewareHandler.ts
index 4b41d6e8ab82..84d80a7c6f80 100644
--- a/packages/nuxt/src/runtime/hooks/wrapMiddlewareHandler.ts
+++ b/packages/nuxt/src/runtime/hooks/wrapMiddlewareHandler.ts
@@ -1,5 +1,4 @@
import {
- type SpanAttributes,
captureException,
debug,
flushIfServerless,
@@ -9,6 +8,7 @@ import {
SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,
SPAN_STATUS_ERROR,
SPAN_STATUS_OK,
+ type SpanAttributes,
startSpan,
} from '@sentry/core';
import type {
diff --git a/packages/nuxt/src/runtime/plugins/database.server.ts b/packages/nuxt/src/runtime/plugins/database.server.ts
index 9cdff58d336e..2226bf58ca3a 100644
--- a/packages/nuxt/src/runtime/plugins/database.server.ts
+++ b/packages/nuxt/src/runtime/plugins/database.server.ts
@@ -1,17 +1,16 @@
import {
- type Span,
- type StartSpanOptions,
addBreadcrumb,
captureException,
debug,
flushIfServerless,
SEMANTIC_ATTRIBUTE_SENTRY_OP,
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
+ type Span,
SPAN_STATUS_ERROR,
startSpan,
+ type StartSpanOptions,
} from '@sentry/core';
import type { Database, PreparedStatement } from 'db0';
-// eslint-disable-next-line import/no-extraneous-dependencies
import { defineNitroPlugin, useDatabase } from 'nitropack/runtime';
import type { DatabaseConnectionConfig as DatabaseConfig } from 'nitropack/types';
// @ts-expect-error - This is a virtual module
diff --git a/packages/nuxt/src/runtime/plugins/sentry.server.ts b/packages/nuxt/src/runtime/plugins/sentry.server.ts
index b529eafc4ee0..9514e4d06a15 100644
--- a/packages/nuxt/src/runtime/plugins/sentry.server.ts
+++ b/packages/nuxt/src/runtime/plugins/sentry.server.ts
@@ -6,7 +6,6 @@ import {
withIsolationScope,
} from '@sentry/core';
import type { EventHandler, H3Event } from 'h3';
-// eslint-disable-next-line import/no-extraneous-dependencies
import { defineNitroPlugin } from 'nitropack/runtime';
import type { NuxtRenderHTMLContext } from 'nuxt/app';
import { sentryCaptureErrorHook } from '../hooks/captureErrorHook';
diff --git a/packages/nuxt/src/runtime/plugins/storage.server.ts b/packages/nuxt/src/runtime/plugins/storage.server.ts
index 710424d6995e..d73f71de4f51 100644
--- a/packages/nuxt/src/runtime/plugins/storage.server.ts
+++ b/packages/nuxt/src/runtime/plugins/storage.server.ts
@@ -1,6 +1,4 @@
import {
- type SpanAttributes,
- type StartSpanOptions,
captureException,
debug,
flushIfServerless,
@@ -10,9 +8,10 @@ import {
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
SPAN_STATUS_ERROR,
SPAN_STATUS_OK,
+ type SpanAttributes,
startSpan,
+ type StartSpanOptions,
} from '@sentry/core';
-// eslint-disable-next-line import/no-extraneous-dependencies
import { defineNitroPlugin, useStorage } from 'nitropack/runtime';
import type { CacheEntry, ResponseCacheEntry } from 'nitropack/types';
import type { Driver, Storage } from 'unstorage';
diff --git a/packages/nuxt/src/server/index.ts b/packages/nuxt/src/server/index.ts
index 6ac8d97b4241..2337ef2fbc22 100644
--- a/packages/nuxt/src/server/index.ts
+++ b/packages/nuxt/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/node';
export { init } from './sdk';
diff --git a/packages/nuxt/src/server/sdk.ts b/packages/nuxt/src/server/sdk.ts
index edbd26b3d707..2b492b1249ac 100644
--- a/packages/nuxt/src/server/sdk.ts
+++ b/packages/nuxt/src/server/sdk.ts
@@ -2,10 +2,10 @@ import * as path from 'node:path';
import type { Client, Event, EventProcessor, Integration } from '@sentry/core';
import { applySdkMetadata, debug, flush, getGlobalScope, vercelWaitUntil } from '@sentry/core';
import {
- type NodeOptions,
getDefaultIntegrations as getDefaultNodeIntegrations,
httpIntegration,
init as initNode,
+ type NodeOptions,
} from '@sentry/node';
import { DEBUG_BUILD } from '../common/debug-build';
import type { SentryNuxtServerOptions } from '../common/types';
diff --git a/packages/nuxt/src/vite/sourceMaps.ts b/packages/nuxt/src/vite/sourceMaps.ts
index 481a5910e024..dff4f74df2f7 100644
--- a/packages/nuxt/src/vite/sourceMaps.ts
+++ b/packages/nuxt/src/vite/sourceMaps.ts
@@ -1,6 +1,6 @@
import type { Nuxt } from '@nuxt/schema';
-import { type SentryRollupPluginOptions, sentryRollupPlugin } from '@sentry/rollup-plugin';
-import { type SentryVitePluginOptions, sentryVitePlugin } from '@sentry/vite-plugin';
+import { sentryRollupPlugin, type SentryRollupPluginOptions } from '@sentry/rollup-plugin';
+import { sentryVitePlugin, type SentryVitePluginOptions } from '@sentry/vite-plugin';
import type { NitroConfig } from 'nitropack';
import type { SentryNuxtModuleOptions } from '../common/types';
diff --git a/packages/nuxt/test/runtime/plugins/server.test.ts b/packages/nuxt/test/runtime/plugins/server.test.ts
index 2190e4ed5ef3..b1ba9417c1ba 100644
--- a/packages/nuxt/test/runtime/plugins/server.test.ts
+++ b/packages/nuxt/test/runtime/plugins/server.test.ts
@@ -1,5 +1,5 @@
import { getTraceMetaTags } from '@sentry/core';
-import { type Mock, afterEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, describe, expect, it, type Mock, vi } from 'vitest';
import { addSentryTracingMetaTags } from '../../../src/runtime/utils';
vi.mock(import('@sentry/core'), async importOriginal => {
diff --git a/packages/nuxt/test/runtime/utils.test.ts b/packages/nuxt/test/runtime/utils.test.ts
index 70226ee12c86..fe1ebd94fdf3 100644
--- a/packages/nuxt/test/runtime/utils.test.ts
+++ b/packages/nuxt/test/runtime/utils.test.ts
@@ -1,5 +1,5 @@
import { captureException, getClient } from '@sentry/core';
-import { type Mock, afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest';
+import { afterEach, beforeEach, describe, expect, it, type Mock, test, vi } from 'vitest';
import type { ComponentPublicInstance } from 'vue';
import { extractErrorContext, reportNuxtError } from '../../src/runtime/utils';
diff --git a/packages/opentelemetry/test/helpers/isSpan.ts b/packages/opentelemetry/test/helpers/isSpan.ts
index a0ba28173b9e..239012323cda 100644
--- a/packages/opentelemetry/test/helpers/isSpan.ts
+++ b/packages/opentelemetry/test/helpers/isSpan.ts
@@ -1,5 +1,5 @@
-import type { Span } from '@opentelemetry/api';
-import { type SpanContext, INVALID_SPANID, INVALID_TRACEID } from '@opentelemetry/api';
+import type { Span, SpanContext } from '@opentelemetry/api';
+import { INVALID_SPANID, INVALID_TRACEID } from '@opentelemetry/api';
export const isSpan = (value: unknown): value is Span => {
return (
diff --git a/packages/profiling-node/src/integration.ts b/packages/profiling-node/src/integration.ts
index fb0cdbe6195c..17ce6f702639 100644
--- a/packages/profiling-node/src/integration.ts
+++ b/packages/profiling-node/src/integration.ts
@@ -13,7 +13,7 @@ import {
uuid4,
} from '@sentry/core';
import type { NodeClient, NodeOptions } from '@sentry/node';
-import { type RawThreadCpuProfile, CpuProfilerBindings, ProfileFormat } from '@sentry-internal/node-cpu-profiler';
+import { CpuProfilerBindings, ProfileFormat, type RawThreadCpuProfile } from '@sentry-internal/node-cpu-profiler';
import { DEBUG_BUILD } from './debug-build';
import { NODE_MAJOR, NODE_VERSION } from './nodeVersion';
import { MAX_PROFILE_DURATION_MS, maybeProfileSpan, stopSpanProfile } from './spanProfileUtils';
diff --git a/packages/profiling-node/src/spanProfileUtils.ts b/packages/profiling-node/src/spanProfileUtils.ts
index 0f3365bbd261..bf1be3a0bf44 100644
--- a/packages/profiling-node/src/spanProfileUtils.ts
+++ b/packages/profiling-node/src/spanProfileUtils.ts
@@ -2,7 +2,7 @@
import type { CustomSamplingContext, Span } from '@sentry/core';
import { debug, spanIsSampled, spanToJSON, uuid4 } from '@sentry/core';
import type { NodeClient } from '@sentry/node';
-import { type RawThreadCpuProfile, CpuProfilerBindings } from '@sentry-internal/node-cpu-profiler';
+import { CpuProfilerBindings, type RawThreadCpuProfile } from '@sentry-internal/node-cpu-profiler';
import { DEBUG_BUILD } from './debug-build';
import { isValidSampleRate } from './utils';
diff --git a/packages/profiling-node/test/integration.worker.test.ts b/packages/profiling-node/test/integration.worker.test.ts
index 6ce62f018c01..1d34c03b33cb 100644
--- a/packages/profiling-node/test/integration.worker.test.ts
+++ b/packages/profiling-node/test/integration.worker.test.ts
@@ -1,5 +1,4 @@
-import type { Transport } from '@sentry/core';
-import { type ProfilingIntegration } from '@sentry/core';
+import type { ProfilingIntegration, Transport } from '@sentry/core';
import * as Sentry from '@sentry/node';
import { expect, it, vi } from 'vitest';
import { _nodeProfilingIntegration } from '../src/integration';
diff --git a/packages/react-router/src/client/index.ts b/packages/react-router/src/client/index.ts
index 507f4172fe0b..ba5c1c1264cb 100644
--- a/packages/react-router/src/client/index.ts
+++ b/packages/react-router/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/browser';
export { init } from './sdk';
diff --git a/packages/react-router/src/index.types.ts b/packages/react-router/src/index.types.ts
index 58566ba214fe..c9c5cb371763 100644
--- a/packages/react-router/src/index.types.ts
+++ b/packages/react-router/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
import type { Integration, Options, StackParser } from '@sentry/core';
diff --git a/packages/react-router/src/server/index.ts b/packages/react-router/src/server/index.ts
index f595146ffe68..acca80a94d81 100644
--- a/packages/react-router/src/server/index.ts
+++ b/packages/react-router/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/node';
export { init } from './sdk';
diff --git a/packages/react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts b/packages/react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts
index cc16b03076ec..e4471167f7ce 100644
--- a/packages/react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts
+++ b/packages/react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts
@@ -1,4 +1,4 @@
-import { type Client, type Event, type EventHint, debug, defineIntegration } from '@sentry/core';
+import { type Client, debug, defineIntegration, type Event, type EventHint } from '@sentry/core';
import type { NodeOptions } from '@sentry/node';
/**
diff --git a/packages/react-router/src/vite/plugin.ts b/packages/react-router/src/vite/plugin.ts
index 8163ee4c6a1b..d58b08df3fa2 100644
--- a/packages/react-router/src/vite/plugin.ts
+++ b/packages/react-router/src/vite/plugin.ts
@@ -1,5 +1,4 @@
-import type { ConfigEnv } from 'vite';
-import { type Plugin } from 'vite';
+import type { ConfigEnv, Plugin } from 'vite';
import { makeConfigInjectorPlugin } from './makeConfigInjectorPlugin';
import { makeCustomSentryVitePlugins } from './makeCustomSentryVitePlugins';
import { makeEnableSourceMapsPlugin } from './makeEnableSourceMapsPlugin';
diff --git a/packages/react/package.json b/packages/react/package.json
index 50ce70cd71b0..1913ac05af1f 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -56,7 +56,7 @@
"@types/react-router-4": "npm:@types/react-router@4.0.25",
"@types/react-router-5": "npm:@types/react-router@5.1.20",
"eslint-plugin-react": "^7.20.5",
- "eslint-plugin-react-hooks": "^4.0.8",
+ "eslint-plugin-react-hooks": "^4.6.0",
"history-4": "npm:history@4.6.0",
"history-5": "npm:history@4.9.0",
"react": "^18.3.1",
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
index 4638bc5c4c98..139401da7a6e 100644
--- a/packages/react/src/index.ts
+++ b/packages/react/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/browser';
export { init } from './sdk';
diff --git a/packages/remix/src/client/index.ts b/packages/remix/src/client/index.ts
index 6eb908457432..65e6b9fbc184 100644
--- a/packages/remix/src/client/index.ts
+++ b/packages/remix/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import { debug } from '@sentry/core';
import { DEBUG_BUILD } from '../utils/debug-build';
diff --git a/packages/remix/src/client/sdk.ts b/packages/remix/src/client/sdk.ts
index 21b19e1aeb24..d09ec6786ce4 100644
--- a/packages/remix/src/client/sdk.ts
+++ b/packages/remix/src/client/sdk.ts
@@ -1,4 +1,3 @@
-/* eslint-enable @typescript-eslint/no-unused-vars */
import type { Client } from '@sentry/core';
import { applySdkMetadata } from '@sentry/core';
import { init as reactInit } from '@sentry/react';
diff --git a/packages/remix/src/cloudflare/index.ts b/packages/remix/src/cloudflare/index.ts
index 46c443cac39f..9b78855ae2d3 100644
--- a/packages/remix/src/cloudflare/index.ts
+++ b/packages/remix/src/cloudflare/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
import {
instrumentBuild as instrumentRemixBuild,
makeWrappedCreateRequestHandler,
diff --git a/packages/remix/src/index.types.ts b/packages/remix/src/index.types.ts
index cacbac00e591..61d4f7e0b9bb 100644
--- a/packages/remix/src/index.types.ts
+++ b/packages/remix/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part. Some of the exports collide,
diff --git a/packages/remix/src/server/index.ts b/packages/remix/src/server/index.ts
index 9c9885d1749a..88254807ec05 100644
--- a/packages/remix/src/server/index.ts
+++ b/packages/remix/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
// We need to explicitly export @sentry/node as they end up under `default` in ESM builds
// See: https://github.com/getsentry/sentry-javascript/issues/8474
export {
@@ -7,6 +10,7 @@ export {
amqplibIntegration,
// eslint-disable-next-line deprecation/deprecation
anrIntegration,
+ // eslint-disable-next-line deprecation/deprecation
disableAnrDetectionForCallback,
captureCheckIn,
captureConsoleIntegration,
diff --git a/packages/remix/src/vendor/instrumentation.ts b/packages/remix/src/vendor/instrumentation.ts
index 6ccc56c7a88f..e42f6709c0c4 100644
--- a/packages/remix/src/vendor/instrumentation.ts
+++ b/packages/remix/src/vendor/instrumentation.ts
@@ -1,5 +1,4 @@
/* eslint-disable deprecation/deprecation */
-/* eslint-disable max-lines */
/* eslint-disable jsdoc/require-jsdoc */
// Vendored and modified from:
diff --git a/packages/remix/test/index.client.test.ts b/packages/remix/test/index.client.test.ts
index c5af95a420ef..eea6e69da1fb 100644
--- a/packages/remix/test/index.client.test.ts
+++ b/packages/remix/test/index.client.test.ts
@@ -1,5 +1,5 @@
import * as SentryReact from '@sentry/react';
-import { type Mock, afterEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, describe, expect, it, type Mock, vi } from 'vitest';
import { init } from '../src/index.client';
vi.mock('@sentry/react', { spy: true });
diff --git a/packages/remix/test/index.server.test.ts b/packages/remix/test/index.server.test.ts
index 8e61ebd77e06..68dc1e249b93 100644
--- a/packages/remix/test/index.server.test.ts
+++ b/packages/remix/test/index.server.test.ts
@@ -1,5 +1,5 @@
import * as SentryNode from '@sentry/node';
-import { type Mock, afterEach, describe, expect, it, vi } from 'vitest';
+import { afterEach, describe, expect, it, type Mock, vi } from 'vitest';
import { init } from '../src/index.server';
vi.mock('@sentry/node', { spy: true });
diff --git a/packages/replay-worker/.eslintrc.js b/packages/replay-worker/.eslintrc.js
index 2436a338dfcd..684e70d6a3b2 100644
--- a/packages/replay-worker/.eslintrc.js
+++ b/packages/replay-worker/.eslintrc.js
@@ -17,6 +17,7 @@ module.exports = {
// these somehow fail with rollup.examples.config.mjs
files: ['*.mjs'],
rules: {
+ 'import/named': 'off',
'import/default': 'off',
'import/no-named-as-default': 'off',
'import/no-named-as-default-member': 'off',
diff --git a/packages/solid/package.json b/packages/solid/package.json
index 299c1cef8d49..72ba7e18d3f9 100644
--- a/packages/solid/package.json
+++ b/packages/solid/package.json
@@ -58,7 +58,7 @@
"@sentry/core": "10.28.0"
},
"peerDependencies": {
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.13.4 || ^0.14.0 || ^0.15.0",
"@tanstack/solid-router": "^1.132.27",
"solid-js": "^1.8.4"
},
@@ -71,7 +71,7 @@
}
},
"devDependencies": {
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/testing-library": "0.8.5",
"@tanstack/solid-router": "^1.132.27",
"@testing-library/dom": "^7.21.4",
diff --git a/packages/solid/src/index.ts b/packages/solid/src/index.ts
index 8a05327bcf0b..01cc41072235 100644
--- a/packages/solid/src/index.ts
+++ b/packages/solid/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/browser';
export { init } from './sdk';
diff --git a/packages/solidstart/package.json b/packages/solidstart/package.json
index 0be41812d1a7..6ccb821e772a 100644
--- a/packages/solidstart/package.json
+++ b/packages/solidstart/package.json
@@ -57,7 +57,7 @@
"access": "public"
},
"peerDependencies": {
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.13.4 || ^0.14.0 || ^0.15.0",
"@solidjs/start": "^1.0.0"
},
"peerDependenciesMeta": {
@@ -72,7 +72,7 @@
"@sentry/vite-plugin": "^4.1.0"
},
"devDependencies": {
- "@solidjs/router": "^0.13.4",
+ "@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.0.0",
"@solidjs/testing-library": "0.8.5",
"@testing-library/jest-dom": "^6.4.5",
diff --git a/packages/solidstart/src/client/index.ts b/packages/solidstart/src/client/index.ts
index 9b455bb3048c..a3ef8a6a27a5 100644
--- a/packages/solidstart/src/client/index.ts
+++ b/packages/solidstart/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/solid';
export { init } from './sdk';
diff --git a/packages/solidstart/src/index.types.ts b/packages/solidstart/src/index.types.ts
index 7f7528a0dddb..da45898b3915 100644
--- a/packages/solidstart/src/index.types.ts
+++ b/packages/solidstart/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part.
diff --git a/packages/solidstart/src/server/index.ts b/packages/solidstart/src/server/index.ts
index db470feb3039..6e2bc1cb9f61 100644
--- a/packages/solidstart/src/server/index.ts
+++ b/packages/solidstart/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
// Node SDK exports
// Unfortunately, we cannot `export * from '@sentry/node'` because in prod builds,
// Vite puts these exports into a `default` property (Sentry.default) rather than
diff --git a/packages/solidstart/src/server/solidrouter.ts b/packages/solidstart/src/server/solidrouter.ts
index 976d87efb8a8..bdd5b0016d25 100644
--- a/packages/solidstart/src/server/solidrouter.ts
+++ b/packages/solidstart/src/server/solidrouter.ts
@@ -1,8 +1,6 @@
import type { HashRouter, MemoryRouter, Router as BaseRouter, RouteSectionProps, StaticRouter } from '@solidjs/router';
import type { Component, JSX, ParentProps } from 'solid-js';
-// eslint-disable-next-line import/no-extraneous-dependencies
import { mergeProps, splitProps } from 'solid-js';
-// eslint-disable-next-line import/no-extraneous-dependencies
import { createComponent } from 'solid-js/web';
// We use @sentry/solid/solidrouter on the client.
diff --git a/packages/solidstart/src/solidrouter.client.ts b/packages/solidstart/src/solidrouter.client.ts
index ee104bf72e2b..0cc7bf025e83 100644
--- a/packages/solidstart/src/solidrouter.client.ts
+++ b/packages/solidstart/src/solidrouter.client.ts
@@ -1 +1,4 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from './client/solidrouter';
diff --git a/packages/solidstart/src/solidrouter.ts b/packages/solidstart/src/solidrouter.ts
index 91b7f296750b..019930b90650 100644
--- a/packages/solidstart/src/solidrouter.ts
+++ b/packages/solidstart/src/solidrouter.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part.
diff --git a/packages/svelte/src/index.ts b/packages/svelte/src/index.ts
index 8db23384897e..000c8fe57be4 100644
--- a/packages/svelte/src/index.ts
+++ b/packages/svelte/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export type {
ComponentTrackingInitOptions as ComponentTrackingOptions,
TrackComponentOptions as TrackingOptions,
diff --git a/packages/sveltekit/src/client/index.ts b/packages/sveltekit/src/client/index.ts
index 558526b1f318..0740b56f3c5f 100644
--- a/packages/sveltekit/src/client/index.ts
+++ b/packages/sveltekit/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/svelte';
export { init } from './sdk';
diff --git a/packages/sveltekit/src/index.types.ts b/packages/sveltekit/src/index.types.ts
index 40c2f5ff848e..f6bdfef640c7 100644
--- a/packages/sveltekit/src/index.types.ts
+++ b/packages/sveltekit/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part.
diff --git a/packages/sveltekit/src/server-common/integrations/svelteKitSpans.ts b/packages/sveltekit/src/server-common/integrations/svelteKitSpans.ts
index 5ab24a731279..c38108c75542 100644
--- a/packages/sveltekit/src/server-common/integrations/svelteKitSpans.ts
+++ b/packages/sveltekit/src/server-common/integrations/svelteKitSpans.ts
@@ -1,5 +1,5 @@
-import type { Integration, SpanOrigin } from '@sentry/core';
-import { type SpanJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
+import type { Integration, SpanJSON, SpanOrigin } from '@sentry/core';
+import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
/**
* A small integration that preprocesses spans so that SvelteKit-generated spans
diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts
index 88177f11354a..9c2e4cd82a34 100644
--- a/packages/sveltekit/src/server/index.ts
+++ b/packages/sveltekit/src/server/index.ts
@@ -1,3 +1,4 @@
+/* eslint-disable import/export */
// Node SDK exports
// Unfortunately, we cannot `export * from '@sentry/node'` because in prod builds,
// Vite puts these exports into a `default` property (Sentry.default) rather than
diff --git a/packages/sveltekit/src/vite/injectGlobalValues.ts b/packages/sveltekit/src/vite/injectGlobalValues.ts
index 20f446b6b46f..8f47a0d9100a 100644
--- a/packages/sveltekit/src/vite/injectGlobalValues.ts
+++ b/packages/sveltekit/src/vite/injectGlobalValues.ts
@@ -1,4 +1,4 @@
-import { type InternalGlobal, escapeStringForRegex } from '@sentry/core';
+import { escapeStringForRegex, type InternalGlobal } from '@sentry/core';
import MagicString from 'magic-string';
import type { Plugin } from 'vite';
import { type BackwardsForwardsCompatibleSvelteConfig, getAdapterOutputDir, getHooksFileName } from './svelteConfig';
diff --git a/packages/sveltekit/test/server-common/serverRoute.test.ts b/packages/sveltekit/test/server-common/serverRoute.test.ts
index 1edfb6da6ebd..1000d513db5e 100644
--- a/packages/sveltekit/test/server-common/serverRoute.test.ts
+++ b/packages/sveltekit/test/server-common/serverRoute.test.ts
@@ -1,6 +1,6 @@
import * as SentryCore from '@sentry/core';
-import type { NumericRange } from '@sveltejs/kit';
-import { type RequestEvent, error, redirect } from '@sveltejs/kit';
+import type { NumericRange, type RequestEvent } from '@sveltejs/kit';
+import { error, redirect } from '@sveltejs/kit';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import {
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
diff --git a/packages/tanstackstart-react/src/client/index.ts b/packages/tanstackstart-react/src/client/index.ts
index 7c603d040693..2299b46b7d64 100644
--- a/packages/tanstackstart-react/src/client/index.ts
+++ b/packages/tanstackstart-react/src/client/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/react';
export { init } from './sdk';
diff --git a/packages/tanstackstart-react/src/index.client.ts b/packages/tanstackstart-react/src/index.client.ts
index 481d8d7cd384..96c65e2ad4b2 100644
--- a/packages/tanstackstart-react/src/index.client.ts
+++ b/packages/tanstackstart-react/src/index.client.ts
@@ -1,6 +1,6 @@
-/* eslint-disable import/export */
-
// TODO: For now these are empty re-exports, but we may add actual implementations here
// so we keep this to be future proof
export * from './client';
+// nothing gets exported yet from there
+// eslint-disable-next-line import/export
export * from './common';
diff --git a/packages/tanstackstart-react/src/index.types.ts b/packages/tanstackstart-react/src/index.types.ts
index 5a44af1b59d4..cf624f5a1a0b 100644
--- a/packages/tanstackstart-react/src/index.types.ts
+++ b/packages/tanstackstart-react/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part. Some of the exports collide,
@@ -20,11 +22,7 @@ export declare const contextLinesIntegration: typeof clientSdk.contextLinesInteg
export declare const getDefaultIntegrations: (options: Options) => Integration[];
export declare const defaultStackParser: StackParser;
-export declare function getSentryRelease(fallback?: string): string | undefined;
-
export declare const ErrorBoundary: typeof clientSdk.ErrorBoundary;
-export declare const createReduxEnhancer: typeof clientSdk.createReduxEnhancer;
-export declare const showReportDialog: typeof clientSdk.showReportDialog;
export declare const withErrorBoundary: typeof clientSdk.withErrorBoundary;
export declare const logger: typeof clientSdk.logger | typeof serverSdk.logger;
diff --git a/packages/tanstackstart-react/src/server/index.ts b/packages/tanstackstart-react/src/server/index.ts
index f377305d429f..b91a89ed9482 100644
--- a/packages/tanstackstart-react/src/server/index.ts
+++ b/packages/tanstackstart-react/src/server/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/node';
export { init } from './sdk';
diff --git a/packages/tanstackstart/src/index.client.ts b/packages/tanstackstart/src/index.client.ts
index 481d8d7cd384..326a9b310951 100644
--- a/packages/tanstackstart/src/index.client.ts
+++ b/packages/tanstackstart/src/index.client.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// TODO: For now these are empty re-exports, but we may add actual implementations here
diff --git a/packages/tanstackstart/src/index.server.ts b/packages/tanstackstart/src/index.server.ts
index a3606fe34592..55afc6ebdbee 100644
--- a/packages/tanstackstart/src/index.server.ts
+++ b/packages/tanstackstart/src/index.server.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// TODO: For now these are empty re-exports, but we may add actual implementations here
diff --git a/packages/tanstackstart/src/index.types.ts b/packages/tanstackstart/src/index.types.ts
index 730fac2ff284..d2129ff9e5d7 100644
--- a/packages/tanstackstart/src/index.types.ts
+++ b/packages/tanstackstart/src/index.types.ts
@@ -1,3 +1,5 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
/* eslint-disable import/export */
// We export everything from both the client part of the SDK and from the server part. Some of the exports collide,
diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts
index 7e57d55865f7..3e870ff1062b 100644
--- a/packages/vue/src/index.ts
+++ b/packages/vue/src/index.ts
@@ -1,3 +1,6 @@
+// import/export got a false positive, and affects most of our index barrel files
+// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
+/* eslint-disable import/export */
export * from '@sentry/browser';
export { init } from './sdk';
diff --git a/yarn.lock b/yarn.lock
index c62e944194d0..210e9d186cfb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1289,13 +1289,6 @@
events "^3.0.0"
tslib "^2.2.0"
-"@babel/code-frame@7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
@@ -1560,7 +1553,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.27.1":
+"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
@@ -1587,16 +1580,6 @@
"@babel/template" "^7.27.2"
"@babel/types" "^7.27.6"
-"@babel/highlight@^7.10.4":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d"
- integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==
- dependencies:
- "@babel/helper-validator-identifier" "^7.24.7"
- chalk "^2.4.2"
- js-tokens "^4.0.0"
- picocolors "^1.0.0"
-
"@babel/parser@7.26.9":
version "7.26.9"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5"
@@ -3012,6 +2995,17 @@
dependencies:
tslib "^2.4.0"
+"@es-joy/jsdoccomment@~0.50.2":
+ version "0.50.2"
+ resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz#707768f0cb62abe0703d51aa9086986d230a5d5c"
+ integrity sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==
+ dependencies:
+ "@types/estree" "^1.0.6"
+ "@typescript-eslint/types" "^8.11.0"
+ comment-parser "1.4.1"
+ esquery "^1.6.0"
+ jsdoc-type-pratt-parser "~4.1.0"
+
"@esbuild/aix-ppc64@0.19.12":
version "0.19.12"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f"
@@ -4104,26 +4098,31 @@
dependencies:
eslint-visitor-keys "^3.4.3"
-"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0":
+"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0", "@eslint-community/regexpp@^4.6.1":
version "4.12.2"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
-"@eslint/eslintrc@^0.4.3":
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
- integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
dependencies:
ajv "^6.12.4"
- debug "^4.1.1"
- espree "^7.3.0"
- globals "^13.9.0"
- ignore "^4.0.6"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
import-fresh "^3.2.1"
- js-yaml "^3.13.1"
- minimatch "^3.0.4"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
strip-json-comments "^3.1.1"
+"@eslint/js@8.57.0":
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
+ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+
"@fastify/busboy@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8"
@@ -4631,19 +4630,24 @@
resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.19.4.tgz#2721cda094f7c080ee985494ac3e074f16c503eb"
integrity sha512-AWKQZ/YkHUBSHeL/5Ld8FWgUs6wFf4TxGYxqp9wLZxRdFuHBpXmgOq+CuDoL4vllkZLzovCf5HBJnypiy3EtHA==
-"@humanwhocodes/config-array@^0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
- integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+"@humanwhocodes/config-array@^0.11.14":
+ version "0.11.14"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
+ integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.0"
- debug "^4.1.1"
- minimatch "^3.0.4"
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
+ minimatch "^3.0.5"
-"@humanwhocodes/object-schema@^1.2.0":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
- integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@hutson/parse-repository-url@^3.0.0":
version "3.0.2"
@@ -5288,25 +5292,25 @@
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-14.2.13.tgz#859b38aaa57ffe1351d08f9166724936c9e6b365"
integrity sha512-RQx/rGX7K/+R55x1R6Ax1JzyeHi8cW11dEXpzHWipyuSpusQLUN53F02eMB4VTakXsL3mFNWWy4bX3/LSq8/9w==
-"@nodelib/fs.scandir@2.1.4":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
- integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
- "@nodelib/fs.stat" "2.0.4"
+ "@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
- integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
- integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
- "@nodelib/fs.scandir" "2.1.4"
+ "@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@nothing-but/utils@~0.17.0":
@@ -6967,6 +6971,11 @@
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz#1657f56326bbe0ac80eedc9f9c18fc1ddd24e107"
integrity sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==
+"@rtsao/scc@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
+ integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
+
"@schematics/angular@14.2.13":
version "14.2.13"
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-14.2.13.tgz#35ee9120a3ac07077bad169fa74fdf4ce4e193d7"
@@ -7857,10 +7866,10 @@
resolved "https://registry.yarnpkg.com/@solidjs/meta/-/meta-0.29.4.tgz#28a444db5200d1c9e4e62d8762ea808d3e8beffd"
integrity sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g==
-"@solidjs/router@^0.13.4":
- version "0.13.6"
- resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.13.6.tgz#210ca2761d4bf294f06ac0f9e25c16fafdabefac"
- integrity sha512-CdpFsBYoiJ/FQ4wZIamj3KEFRkmrYu5sVXM6PouNkmSENta1YJamsm9wa/VjaPmkw2RsnDnO0UvZ705v6EgOXQ==
+"@solidjs/router@^0.15.0":
+ version "0.15.4"
+ resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.15.4.tgz#e2b2d797541dcbdc36641e5f610f93ab4fa11c8a"
+ integrity sha512-WOpgg9a9T638cR+5FGbFi/IV4l2FpmBs1GpIMSPa0Ce9vyJN7Wts+X2PqMf9IYn0zUj2MlSJtm1gp7/HI/n5TQ==
"@solidjs/start@^1.0.0":
version "1.0.2"
@@ -8770,7 +8779,7 @@
"@types/tough-cookie" "*"
parse5 "^7.0.0"
-"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -9044,7 +9053,7 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
-"@types/semver@^7.3.12", "@types/semver@^7.5.0":
+"@types/semver@^7.3.12":
version "7.5.3"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
@@ -9172,29 +9181,30 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@^5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz#54f8368d080eb384a455f60c2ee044e948a8ce67"
- integrity sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==
+"@typescript-eslint/eslint-plugin@^5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db"
+ integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
dependencies:
- "@typescript-eslint/scope-manager" "5.48.0"
- "@typescript-eslint/type-utils" "5.48.0"
- "@typescript-eslint/utils" "5.48.0"
+ "@eslint-community/regexpp" "^4.4.0"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/type-utils" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
debug "^4.3.4"
+ graphemer "^1.4.0"
ignore "^5.2.0"
natural-compare-lite "^1.4.0"
- regexpp "^3.2.0"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/parser@^5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.0.tgz#02803355b23884a83e543755349809a50b7ed9ba"
- integrity sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==
+"@typescript-eslint/parser@^5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7"
+ integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
dependencies:
- "@typescript-eslint/scope-manager" "5.48.0"
- "@typescript-eslint/types" "5.48.0"
- "@typescript-eslint/typescript-estree" "5.48.0"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
debug "^4.3.4"
"@typescript-eslint/project-service@8.35.0":
@@ -9206,77 +9216,83 @@
"@typescript-eslint/types" "^8.35.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz#607731cb0957fbc52fd754fd79507d1b6659cecf"
- integrity sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==
+"@typescript-eslint/scope-manager@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c"
+ integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==
dependencies:
- "@typescript-eslint/types" "5.48.0"
- "@typescript-eslint/visitor-keys" "5.48.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/visitor-keys" "5.62.0"
-"@typescript-eslint/scope-manager@6.7.4":
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz#a484a17aa219e96044db40813429eb7214d7b386"
- integrity sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==
+"@typescript-eslint/scope-manager@7.18.0":
+ version "7.18.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83"
+ integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==
dependencies:
- "@typescript-eslint/types" "6.7.4"
- "@typescript-eslint/visitor-keys" "6.7.4"
+ "@typescript-eslint/types" "7.18.0"
+ "@typescript-eslint/visitor-keys" "7.18.0"
"@typescript-eslint/tsconfig-utils@8.35.0", "@typescript-eslint/tsconfig-utils@^8.35.0":
version "8.35.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz#6e05aeb999999e31d562ceb4fe144f3cbfbd670e"
integrity sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==
-"@typescript-eslint/type-utils@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz#40496dccfdc2daa14a565f8be80ad1ae3882d6d6"
- integrity sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==
+"@typescript-eslint/type-utils@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a"
+ integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==
dependencies:
- "@typescript-eslint/typescript-estree" "5.48.0"
- "@typescript-eslint/utils" "5.48.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.0.tgz#d725da8dfcff320aab2ac6f65c97b0df30058449"
- integrity sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==
+"@typescript-eslint/types@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
+ integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
-"@typescript-eslint/types@6.7.4":
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.4.tgz#5d358484d2be986980c039de68e9f1eb62ea7897"
- integrity sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==
+"@typescript-eslint/types@7.18.0":
+ version "7.18.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9"
+ integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==
-"@typescript-eslint/types@8.35.0", "@typescript-eslint/types@^8.35.0":
+"@typescript-eslint/types@8.35.0":
version "8.35.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.35.0.tgz#e60d062907930e30008d796de5c4170f02618a93"
integrity sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==
-"@typescript-eslint/typescript-estree@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz#a7f04bccb001003405bb5452d43953a382c2fac2"
- integrity sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==
+"@typescript-eslint/types@^8.11.0", "@typescript-eslint/types@^8.35.0":
+ version "8.47.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.47.0.tgz#c7fc9b6642d03505f447a8392934b9d1850de5af"
+ integrity sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==
+
+"@typescript-eslint/typescript-estree@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b"
+ integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==
dependencies:
- "@typescript-eslint/types" "5.48.0"
- "@typescript-eslint/visitor-keys" "5.48.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/visitor-keys" "5.62.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/typescript-estree@6.7.4":
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz#f2baece09f7bb1df9296e32638b2e1130014ef1a"
- integrity sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==
+"@typescript-eslint/typescript-estree@7.18.0":
+ version "7.18.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931"
+ integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==
dependencies:
- "@typescript-eslint/types" "6.7.4"
- "@typescript-eslint/visitor-keys" "6.7.4"
+ "@typescript-eslint/types" "7.18.0"
+ "@typescript-eslint/visitor-keys" "7.18.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
- semver "^7.5.4"
- ts-api-utils "^1.0.1"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
"@typescript-eslint/typescript-estree@^8.23.0":
version "8.35.0"
@@ -9294,48 +9310,45 @@
semver "^7.6.0"
ts-api-utils "^2.1.0"
-"@typescript-eslint/utils@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.0.tgz#eee926af2733f7156ad8d15e51791e42ce300273"
- integrity sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==
+"@typescript-eslint/utils@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86"
+ integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
- "@typescript-eslint/scope-manager" "5.48.0"
- "@typescript-eslint/types" "5.48.0"
- "@typescript-eslint/typescript-estree" "5.48.0"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
semver "^7.3.7"
-"@typescript-eslint/utils@^6.0.0":
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.4.tgz#2236f72b10e38277ee05ef06142522e1de470ff2"
- integrity sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==
+"@typescript-eslint/utils@^7.0.0":
+ version "7.18.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f"
+ integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@types/json-schema" "^7.0.12"
- "@types/semver" "^7.5.0"
- "@typescript-eslint/scope-manager" "6.7.4"
- "@typescript-eslint/types" "6.7.4"
- "@typescript-eslint/typescript-estree" "6.7.4"
- semver "^7.5.4"
+ "@typescript-eslint/scope-manager" "7.18.0"
+ "@typescript-eslint/types" "7.18.0"
+ "@typescript-eslint/typescript-estree" "7.18.0"
-"@typescript-eslint/visitor-keys@5.48.0":
- version "5.48.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz#4446d5e7f6cadde7140390c0e284c8702d944904"
- integrity sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==
+"@typescript-eslint/visitor-keys@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e"
+ integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==
dependencies:
- "@typescript-eslint/types" "5.48.0"
+ "@typescript-eslint/types" "5.62.0"
eslint-visitor-keys "^3.3.0"
-"@typescript-eslint/visitor-keys@6.7.4":
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz#80dfecf820fc67574012375859085f91a4dff043"
- integrity sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==
+"@typescript-eslint/visitor-keys@7.18.0":
+ version "7.18.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7"
+ integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==
dependencies:
- "@typescript-eslint/types" "6.7.4"
- eslint-visitor-keys "^3.4.1"
+ "@typescript-eslint/types" "7.18.0"
+ eslint-visitor-keys "^3.4.3"
"@typescript-eslint/visitor-keys@8.35.0":
version "8.35.0"
@@ -9345,10 +9358,10 @@
"@typescript-eslint/types" "8.35.0"
eslint-visitor-keys "^4.2.1"
-"@ungap/structured-clone@^1.0.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
- integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
+ integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
"@unhead/dom@1.11.6", "@unhead/dom@^1.11.5":
version "1.11.6"
@@ -10279,7 +10292,7 @@ acorn-import-attributes@^1.9.5:
resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef"
integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==
-acorn-jsx@^5.3.1, acorn-jsx@^5.3.2:
+acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
@@ -10323,12 +10336,7 @@ acorn@8.14.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
-acorn@^7.4.0:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-acorn@^8.0.4, acorn@^8.1.0, acorn@^8.10.0, acorn@^8.11.0, acorn@^8.12.1, acorn@^8.14.0, acorn@^8.14.1, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.6.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
+acorn@^8.0.4, acorn@^8.1.0, acorn@^8.10.0, acorn@^8.11.0, acorn@^8.12.1, acorn@^8.14.0, acorn@^8.14.1, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.6.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
version "8.15.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
@@ -10416,7 +10424,7 @@ ajv@8.11.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -10426,7 +10434,7 @@ ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.0, ajv@^8.0.1, ajv@^8.10.0, ajv@^8.9.0:
+ajv@^8.0.0, ajv@^8.10.0, ajv@^8.9.0:
version "8.17.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
@@ -10719,6 +10727,11 @@ archiver@^7.0.0, archiver@^7.0.1:
tar-stream "^3.0.0"
zip-stream "^6.0.1"
+are-docs-informative@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963"
+ integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==
+
are-we-there-yet@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d"
@@ -10796,13 +10809,13 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-buffer-byte-length@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
- integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b"
+ integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==
dependencies:
- call-bind "^1.0.5"
- is-array-buffer "^3.0.4"
+ call-bound "^1.0.3"
+ is-array-buffer "^3.0.5"
array-differ@^3.0.0:
version "3.0.0"
@@ -10829,16 +10842,19 @@ array-ify@^1.0.0:
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
-array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.6:
- version "3.1.6"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
- integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
+array-includes@^3.1.2, array-includes@^3.1.6, array-includes@^3.1.9:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a"
+ integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
- get-intrinsic "^1.1.3"
- is-string "^1.0.7"
+ call-bind "^1.0.8"
+ call-bound "^1.0.4"
+ define-properties "^1.2.1"
+ es-abstract "^1.24.0"
+ es-object-atoms "^1.1.1"
+ get-intrinsic "^1.3.0"
+ is-string "^1.1.1"
+ math-intrinsics "^1.1.0"
array-iterate@^2.0.0:
version "2.0.1"
@@ -10867,25 +10883,38 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-array.prototype.flat@^1.2.3:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b"
- integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==
+array.prototype.findlastindex@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564"
+ integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.2"
- es-shim-unscopables "^1.0.0"
+ call-bind "^1.0.8"
+ call-bound "^1.0.4"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.9"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.1.1"
+ es-shim-unscopables "^1.1.0"
-array.prototype.flatmap@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
- integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
+array.prototype.flat@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5"
+ integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
- es-shim-unscopables "^1.0.0"
+ call-bind "^1.0.8"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.5"
+ es-shim-unscopables "^1.0.2"
+
+array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b"
+ integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==
+ dependencies:
+ call-bind "^1.0.8"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.5"
+ es-shim-unscopables "^1.0.2"
array.prototype.tosorted@^1.1.1:
version "1.1.1"
@@ -10898,6 +10927,19 @@ array.prototype.tosorted@^1.1.1:
es-shim-unscopables "^1.0.0"
get-intrinsic "^1.1.3"
+arraybuffer.prototype.slice@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c"
+ integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.8"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.6"
+ is-array-buffer "^3.0.4"
+
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -10984,11 +11026,6 @@ ast-walker-scope@^0.6.2:
"@babel/parser" "^7.25.3"
ast-kit "^1.0.1"
-astral-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
- integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-
astring@^1.8.6:
version "1.8.6"
resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731"
@@ -11086,6 +11123,11 @@ async-disk-cache@^2.0.0:
rsvp "^4.8.5"
username-sync "^1.0.2"
+async-function@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b"
+ integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==
+
async-mutex@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482"
@@ -12529,7 +12571,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-
es-errors "^1.3.0"
function-bind "^1.1.2"
-call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8:
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
@@ -13165,12 +13207,7 @@ commander@^9.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
-comment-parser@^0.7.6:
- version "0.7.6"
- resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12"
- integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==
-
-comment-parser@^1.1.2:
+comment-parser@1.4.1, comment-parser@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc"
integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==
@@ -13341,11 +13378,6 @@ consolidate@^0.16.0:
dependencies:
bluebird "^3.7.2"
-contains-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
- integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-
content-disposition@0.5.4:
version "0.5.4"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
@@ -13949,6 +13981,33 @@ data-urls@^4.0.0:
whatwg-mimetype "^3.0.0"
whatwg-url "^12.0.0"
+data-view-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570"
+ integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==
+ dependencies:
+ call-bound "^1.0.3"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.2"
+
+data-view-byte-length@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735"
+ integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==
+ dependencies:
+ call-bound "^1.0.3"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.2"
+
+data-view-byte-offset@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191"
+ integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==
+ dependencies:
+ call-bound "^1.0.2"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
dataloader@2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0"
@@ -13982,7 +14041,7 @@ debounce@^1.2.1:
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
-debug@2, debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+debug@2, debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -13996,7 +14055,7 @@ debug@3.1.0:
dependencies:
ms "2.0.0"
-debug@4, debug@^4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.3.7, debug@^4.4.0, debug@^4.4.1:
+debug@4, debug@^4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.3.7, debug@^4.4.0, debug@^4.4.1:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@@ -14482,14 +14541,6 @@ dns-packet@^5.2.2:
dependencies:
"@leichtgewicht/ip-codec" "^2.0.1"
-doctrine@1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
- integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
@@ -14652,7 +14703,7 @@ dset@^3.1.2:
resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.4.tgz#f8eaf5f023f068a036d08cd07dc9ffb7d0065248"
integrity sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==
-dunder-proto@^1.0.1:
+dunder-proto@^1.0.0, dunder-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
@@ -15351,7 +15402,7 @@ enhanced-resolve@^5.10.0, enhanced-resolve@^5.14.1, enhanced-resolve@^5.17.1, en
graceful-fs "^4.2.4"
tapable "^2.2.0"
-enquirer@^2.3.5, enquirer@~2.3.6:
+enquirer@~2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -15415,7 +15466,7 @@ errno@^0.1.1:
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
@@ -15451,35 +15502,65 @@ errx@^0.1.0:
resolved "https://registry.yarnpkg.com/errx/-/errx-0.1.0.tgz#4881e411d90a3b1e1620a07604f50081dd59f3aa"
integrity sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==
-es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.4:
- version "1.20.4"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861"
- integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==
+es-abstract@^1.18.0-next.2, es-abstract@^1.20.4, es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0:
+ version "1.24.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
+ integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
dependencies:
- call-bind "^1.0.2"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.1.3"
- get-symbol-description "^1.0.0"
- has "^1.0.3"
- has-property-descriptors "^1.0.0"
- has-symbols "^1.0.3"
- internal-slot "^1.0.3"
+ array-buffer-byte-length "^1.0.2"
+ arraybuffer.prototype.slice "^1.0.4"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.8"
+ call-bound "^1.0.4"
+ data-view-buffer "^1.0.2"
+ data-view-byte-length "^1.0.2"
+ data-view-byte-offset "^1.0.1"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.1.1"
+ es-set-tostringtag "^2.1.0"
+ es-to-primitive "^1.3.0"
+ function.prototype.name "^1.1.8"
+ get-intrinsic "^1.3.0"
+ get-proto "^1.0.1"
+ get-symbol-description "^1.1.0"
+ globalthis "^1.0.4"
+ gopd "^1.2.0"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+ internal-slot "^1.1.0"
+ is-array-buffer "^3.0.5"
is-callable "^1.2.7"
- is-negative-zero "^2.0.2"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- is-string "^1.0.7"
- is-weakref "^1.0.2"
- object-inspect "^1.12.2"
+ is-data-view "^1.0.2"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.2.1"
+ is-set "^2.0.3"
+ is-shared-array-buffer "^1.0.4"
+ is-string "^1.1.1"
+ is-typed-array "^1.1.15"
+ is-weakref "^1.1.1"
+ math-intrinsics "^1.1.0"
+ object-inspect "^1.13.4"
object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.4.3"
- safe-regex-test "^1.0.0"
- string.prototype.trimend "^1.0.5"
- string.prototype.trimstart "^1.0.5"
- unbox-primitive "^1.0.2"
+ object.assign "^4.1.7"
+ own-keys "^1.0.1"
+ regexp.prototype.flags "^1.5.4"
+ safe-array-concat "^1.1.3"
+ safe-push-apply "^1.0.0"
+ safe-regex-test "^1.1.0"
+ set-proto "^1.0.0"
+ stop-iteration-iterator "^1.1.0"
+ string.prototype.trim "^1.2.10"
+ string.prototype.trimend "^1.0.9"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.3"
+ typed-array-byte-length "^1.0.3"
+ typed-array-byte-offset "^1.0.4"
+ typed-array-length "^1.0.7"
+ unbox-primitive "^1.1.0"
+ which-typed-array "^1.1.19"
es-check@^7.2.1:
version "7.2.1"
@@ -15544,21 +15625,21 @@ es-set-tostringtag@^2.1.0:
has-tostringtag "^1.0.2"
hasown "^2.0.2"
-es-shim-unscopables@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241"
- integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
+es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5"
+ integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==
dependencies:
- has "^1.0.3"
+ hasown "^2.0.2"
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+es-to-primitive@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
+ integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
+ is-callable "^1.2.7"
+ is-date-object "^1.0.5"
+ is-symbol "^1.0.4"
esbuild-android-64@0.15.18:
version "0.15.18"
@@ -16129,37 +16210,35 @@ escodegen@^2.0.0, escodegen@^2.1.0:
optionalDependencies:
source-map "~0.6.1"
-eslint-config-prettier@^6.11.0:
- version "6.15.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
- integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
- dependencies:
- get-stdin "^6.0.0"
+eslint-config-prettier@^9.1.0:
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz#90deb4fa0259592df774b600dbd1d2249a78ce91"
+ integrity sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==
-eslint-import-resolver-node@^0.3.4:
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
- integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+eslint-import-resolver-node@^0.3.9:
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+ integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
dependencies:
- debug "^2.6.9"
- resolve "^1.13.1"
+ debug "^3.2.7"
+ is-core-module "^2.13.0"
+ resolve "^1.22.4"
-eslint-module-utils@^2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
- integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
+eslint-module-utils@^2.12.1:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff"
+ integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==
dependencies:
- debug "^2.6.9"
- pkg-dir "^2.0.0"
+ debug "^3.2.7"
-eslint-plugin-deprecation@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-1.6.0.tgz#b12d0c5a9baf3bcde0752ff6337703c059a4ae23"
- integrity sha512-rld+Vrneh/NXRtDB0vQifOvgUy0HJYoejaxWlVnsk/LK7iij2tCWQIFcCKG4uzQb+Ef86bDke39w1lh4wnon4Q==
+eslint-plugin-deprecation@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-3.0.0.tgz#c0b6bce543c2a01f231d39a1c54fdfebf3560d48"
+ integrity sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==
dependencies:
- "@typescript-eslint/utils" "^6.0.0"
+ "@typescript-eslint/utils" "^7.0.0"
+ ts-api-utils "^1.3.0"
tslib "^2.3.1"
- tsutils "^3.21.0"
eslint-plugin-ember@11.9.0:
version "11.9.0"
@@ -16188,37 +16267,46 @@ eslint-plugin-es@^4.1.0:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
-eslint-plugin-import@^2.22.0:
- version "2.22.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
- integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
- dependencies:
- array-includes "^3.1.1"
- array.prototype.flat "^1.2.3"
- contains-path "^0.1.0"
- debug "^2.6.9"
- doctrine "1.5.0"
- eslint-import-resolver-node "^0.3.4"
- eslint-module-utils "^2.6.0"
- has "^1.0.3"
- minimatch "^3.0.4"
- object.values "^1.1.1"
- read-pkg-up "^2.0.0"
- resolve "^1.17.0"
- tsconfig-paths "^3.9.0"
+eslint-plugin-import@^2.32.0:
+ version "2.32.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980"
+ integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==
+ dependencies:
+ "@rtsao/scc" "^1.1.0"
+ array-includes "^3.1.9"
+ array.prototype.findlastindex "^1.2.6"
+ array.prototype.flat "^1.3.3"
+ array.prototype.flatmap "^1.3.3"
+ debug "^3.2.7"
+ doctrine "^2.1.0"
+ eslint-import-resolver-node "^0.3.9"
+ eslint-module-utils "^2.12.1"
+ hasown "^2.0.2"
+ is-core-module "^2.16.1"
+ is-glob "^4.0.3"
+ minimatch "^3.1.2"
+ object.fromentries "^2.0.8"
+ object.groupby "^1.0.3"
+ object.values "^1.2.1"
+ semver "^6.3.1"
+ string.prototype.trimend "^1.0.9"
+ tsconfig-paths "^3.15.0"
-eslint-plugin-jsdoc@^30.0.3:
- version "30.7.13"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.13.tgz#52e5c74fb806d3bbeb51d04a0c829508c3c6b563"
- integrity sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==
+eslint-plugin-jsdoc@^50.6.1:
+ version "50.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz#a8d192ccca26df368a2fbaff17c9dddefacd773f"
+ integrity sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg==
dependencies:
- comment-parser "^0.7.6"
- debug "^4.3.1"
- jsdoctypeparser "^9.0.0"
- lodash "^4.17.20"
- regextras "^0.7.1"
- semver "^7.3.4"
- spdx-expression-parse "^3.0.1"
+ "@es-joy/jsdoccomment" "~0.50.2"
+ are-docs-informative "^0.0.2"
+ comment-parser "1.4.1"
+ debug "^4.4.1"
+ escape-string-regexp "^4.0.0"
+ espree "^10.3.0"
+ esquery "^1.6.0"
+ parse-imports-exports "^0.2.4"
+ semver "^7.7.2"
+ spdx-expression-parse "^4.0.0"
eslint-plugin-n@15.0.0:
version "15.0.0"
@@ -16241,10 +16329,10 @@ eslint-plugin-qunit@8.0.0:
eslint-utils "^3.0.0"
requireindex "^1.2.0"
-eslint-plugin-react-hooks@^4.0.8:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
- integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
+eslint-plugin-react-hooks@^4.6.0:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
+ integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
eslint-plugin-react@^7.20.5, eslint-plugin-react@^7.31.11:
version "7.31.11"
@@ -16281,10 +16369,10 @@ eslint-plugin-regexp@^1.15.0:
regexp-ast-analysis "^0.6.0"
scslre "^0.2.0"
-eslint-plugin-simple-import-sort@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-6.0.1.tgz#24a3af3b745dcd389c060db28e22d0f5e3edf86e"
- integrity sha512-RfFnoi7fQtv7z9sZNJidIcZgWc0ZJe8uOPC3ldmatai4Igr5iDpzTmSUDEZKYm4TnrR01N0X32kfKvax7bivHQ==
+eslint-plugin-simple-import-sort@^12.1.1:
+ version "12.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz#e64bfdaf91c5b98a298619aa634a9f7aa43b709e"
+ integrity sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==
eslint-scope@5.1.1, eslint-scope@^5.1.1:
version "5.1.1"
@@ -16294,7 +16382,15 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
-eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-utils@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
@@ -16308,7 +16404,7 @@ eslint-utils@^3.0.0:
dependencies:
eslint-visitor-keys "^2.0.0"
-eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
@@ -16328,51 +16424,49 @@ eslint-visitor-keys@^4.2.1:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
-eslint@7.32.0:
- version "7.32.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
- integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
+eslint@8.57.0:
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
+ integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
dependencies:
- "@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.3"
- "@humanwhocodes/config-array" "^0.5.0"
- ajv "^6.10.0"
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.0"
+ "@humanwhocodes/config-array" "^0.11.14"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
+ ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
- debug "^4.0.1"
+ debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
- eslint-scope "^5.1.1"
- eslint-utils "^2.1.0"
- eslint-visitor-keys "^2.0.0"
- espree "^7.3.1"
- esquery "^1.4.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.1.2"
- globals "^13.6.0"
- ignore "^4.0.6"
- import-fresh "^3.0.0"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
- js-yaml "^3.13.1"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
natural-compare "^1.4.0"
- optionator "^0.9.1"
- progress "^2.0.0"
- regexpp "^3.1.0"
- semver "^7.2.1"
- strip-ansi "^6.0.0"
- strip-json-comments "^3.1.0"
- table "^6.0.9"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
esm-env@^1.0.0:
version "1.0.0"
@@ -16384,14 +16478,23 @@ esm@^3.2.25, esm@^3.2.4:
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
-espree@^7.3.0, espree@^7.3.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
- integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+espree@^10.3.0:
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
+ integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
dependencies:
- acorn "^7.4.0"
- acorn-jsx "^5.3.1"
- eslint-visitor-keys "^1.3.0"
+ acorn "^8.15.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^4.2.1"
+
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
version "4.0.1"
@@ -16403,10 +16506,10 @@ esprima@~3.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9"
integrity sha1-U88kes2ncxPlUcOqLnM0LT+099k=
-esquery@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
- integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+esquery@^1.4.2, esquery@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+ integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
dependencies:
estraverse "^5.1.0"
@@ -17536,27 +17639,24 @@ fsevents@~2.3.2, fsevents@~2.3.3:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-function-bind@^1.1.1, function-bind@^1.1.2:
+function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-function.prototype.name@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
- integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
+function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78"
+ integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.0"
- functions-have-names "^1.2.2"
-
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
+ define-properties "^1.2.1"
+ functions-have-names "^1.2.3"
+ hasown "^2.0.2"
+ is-callable "^1.2.7"
-functions-have-names@^1.2.2, functions-have-names@^1.2.3:
+functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
@@ -17626,6 +17726,11 @@ generate-function@^2.3.1:
dependencies:
is-property "^1.0.2"
+generator-function@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2"
+ integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==
+
generic-pool@3.9.0, generic-pool@^3.9.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4"
@@ -17649,7 +17754,7 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0:
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
@@ -17716,11 +17821,6 @@ get-stdin@^4.0.1:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-get-stdin@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
- integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
-
get-stdin@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
@@ -17755,13 +17855,14 @@ get-stream@^8.0.1:
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
-get-symbol-description@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
- integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+get-symbol-description@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee"
+ integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.1"
+ call-bound "^1.0.3"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.6"
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
@@ -17885,7 +17986,7 @@ glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-parent@^6.0.1:
+glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -18020,19 +18121,20 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.6.0, globals@^13.9.0:
- version "13.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
- integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
+globals@^13.19.0:
+ version "13.24.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
-globalthis@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
- integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+globalthis@^1.0.2, globalthis@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
+ integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
dependencies:
- define-properties "^1.1.3"
+ define-properties "^1.2.1"
+ gopd "^1.0.1"
globalyzer@0.1.0:
version "0.1.0"
@@ -18159,6 +18261,11 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
graphql-tag@^2.11.0:
version "2.12.6"
resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1"
@@ -18316,8 +18423,15 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
dependencies:
es-define-property "^1.0.0"
-has-symbols@^1.0.1, has-symbols@^1.0.3, has-symbols@^1.1.0:
- version "1.1.0"
+has-proto@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5"
+ integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==
+ dependencies:
+ dunder-proto "^1.0.0"
+
+has-symbols@^1.0.1, has-symbols@^1.0.3, has-symbols@^1.1.0:
+ version "1.1.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
@@ -18364,13 +18478,6 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
hash-for-dep@^1.0.2, hash-for-dep@^1.4.7, hash-for-dep@^1.5.0, hash-for-dep@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.5.1.tgz#497754b39bee2f1c4ade4521bfd2af0a7c1196e3"
@@ -18388,7 +18495,7 @@ hash-sum@^2.0.0:
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
-hasown@^2.0.0, hasown@^2.0.2:
+hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
@@ -19046,11 +19153,6 @@ ignore-walk@^6.0.0:
dependencies:
minimatch "^9.0.0"
-ignore@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
- integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
ignore@^5.0.4, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
@@ -19076,7 +19178,7 @@ immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
-import-fresh@^3.0.0, import-fresh@^3.2.1:
+import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -19297,14 +19399,14 @@ inquirer@^8.2.1, inquirer@^8.2.4:
through "^2.3.6"
wrap-ansi "^6.0.1"
-internal-slot@^1.0.3, internal-slot@^1.0.4:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
- integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
+internal-slot@^1.0.3, internal-slot@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961"
+ integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==
dependencies:
es-errors "^1.3.0"
- hasown "^2.0.0"
- side-channel "^1.0.4"
+ hasown "^2.0.2"
+ side-channel "^1.1.0"
interpret@^1.0.0:
version "1.4.0"
@@ -19388,13 +19490,14 @@ is-arguments@^1.0.4, is-arguments@^1.1.1:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-array-buffer@^3.0.2, is-array-buffer@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
- integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+is-array-buffer@^3.0.2, is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280"
+ integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.1"
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
+ get-intrinsic "^1.2.6"
is-arrayish@^0.2.1:
version "0.2.1"
@@ -19406,10 +19509,23 @@ is-arrayish@^0.3.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-is-bigint@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2"
- integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==
+is-async-function@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523"
+ integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==
+ dependencies:
+ async-function "^1.0.0"
+ call-bound "^1.0.3"
+ get-proto "^1.0.1"
+ has-tostringtag "^1.0.2"
+ safe-regex-test "^1.1.0"
+
+is-bigint@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
+ integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
+ dependencies:
+ has-bigints "^1.0.2"
is-binary-path@~2.1.0:
version "2.1.0"
@@ -19418,12 +19534,13 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
-is-boolean-object@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0"
- integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==
+is-boolean-object@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e"
+ integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==
dependencies:
- call-bind "^1.0.0"
+ call-bound "^1.0.3"
+ has-tostringtag "^1.0.2"
is-buffer@^1.1.5:
version "1.1.6"
@@ -19442,7 +19559,7 @@ is-builtin-module@^3.1.0, is-builtin-module@^3.2.1:
dependencies:
builtin-modules "^3.3.0"
-is-callable@^1.1.4, is-callable@^1.2.7:
+is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
@@ -19454,7 +19571,7 @@ is-ci@3.0.1:
dependencies:
ci-info "^3.2.0"
-is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.3.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0:
+is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1, is-core-module@^2.3.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0:
version "2.16.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
@@ -19475,12 +19592,22 @@ is-data-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
-is-date-object@^1.0.1, is-date-object@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
- integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+is-data-view@^1.0.1, is-data-view@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e"
+ integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==
dependencies:
- has-tostringtag "^1.0.0"
+ call-bound "^1.0.2"
+ get-intrinsic "^1.2.6"
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.5, is-date-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
+ integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
+ dependencies:
+ call-bound "^1.0.2"
+ has-tostringtag "^1.0.2"
is-descriptor@^0.1.0:
version "0.1.6"
@@ -19527,6 +19654,13 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+is-finalizationregistry@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90"
+ integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==
+ dependencies:
+ call-bound "^1.0.3"
+
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -19537,10 +19671,16 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-is-generator-function@^1.0.7:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b"
- integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==
+is-generator-function@^1.0.10, is-generator-function@^1.0.7:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5"
+ integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==
+ dependencies:
+ call-bound "^1.0.4"
+ generator-function "^2.0.0"
+ get-proto "^1.0.1"
+ has-tostringtag "^1.0.2"
+ safe-regex-test "^1.1.0"
is-git-url@^1.0.0:
version "1.0.0"
@@ -19601,15 +19741,18 @@ is-module@^1.0.0:
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
-is-negative-zero@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
- integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
-is-number-object@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
- integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
+is-number-object@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541"
+ integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==
+ dependencies:
+ call-bound "^1.0.3"
+ has-tostringtag "^1.0.2"
is-number@^3.0.0:
version "3.0.0"
@@ -19633,6 +19776,11 @@ is-obj@^2.0.0:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-path-inside@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db"
@@ -19699,13 +19847,15 @@ is-reference@^3.0.0, is-reference@^3.0.1:
dependencies:
"@types/estree" "*"
-is-regex@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
- integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+is-regex@^1.1.4, is-regex@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
+ integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
+ call-bound "^1.0.2"
+ gopd "^1.2.0"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.2"
is-regexp@^1.0.0:
version "1.0.0"
@@ -19717,12 +19867,12 @@ is-set@^2.0.2, is-set@^2.0.3:
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
-is-shared-array-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
- integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f"
+ integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==
dependencies:
- call-bind "^1.0.2"
+ call-bound "^1.0.3"
is-ssh@^1.4.0:
version "1.4.0"
@@ -19756,12 +19906,13 @@ is-stream@^4.0.1:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b"
integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==
-is-string@^1.0.5, is-string@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
- integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+is-string@^1.0.7, is-string@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
+ integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==
dependencies:
- has-tostringtag "^1.0.0"
+ call-bound "^1.0.3"
+ has-tostringtag "^1.0.2"
is-subdir@^1.2.0:
version "1.2.0"
@@ -19770,12 +19921,14 @@ is-subdir@^1.2.0:
dependencies:
better-path-resolve "1.0.0"
-is-symbol@^1.0.2, is-symbol@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+is-symbol@^1.0.4, is-symbol@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
+ integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
dependencies:
- has-symbols "^1.0.1"
+ call-bound "^1.0.2"
+ has-symbols "^1.1.0"
+ safe-regex-test "^1.1.0"
is-text-path@^1.0.1:
version "1.0.1"
@@ -19791,7 +19944,7 @@ is-type@0.0.1:
dependencies:
core-util-is "~1.0.0"
-is-typed-array@^1.1.14, is-typed-array@^1.1.3:
+is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15, is-typed-array@^1.1.3:
version "1.1.15"
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
@@ -19828,12 +19981,12 @@ is-weakmap@^2.0.2:
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
-is-weakref@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
- integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+is-weakref@^1.0.2, is-weakref@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293"
+ integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==
dependencies:
- call-bind "^1.0.2"
+ call-bound "^1.0.3"
is-weakset@^2.0.3:
version "2.0.3"
@@ -20130,6 +20283,11 @@ jsbn@1.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
+jsdoc-type-pratt-parser@~4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113"
+ integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==
+
jsdoctypeparser@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26"
@@ -20262,7 +20420,7 @@ json5@^0.5.1:
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
-json5@^1.0.1:
+json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
@@ -20797,16 +20955,6 @@ load-json-file@6.2.0:
strip-bom "^4.0.0"
type-fest "^0.6.0"
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
- integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@@ -21138,11 +21286,6 @@ lodash.templatesettings@^4.0.0:
dependencies:
lodash._reinterpolate "^3.0.0"
-lodash.truncate@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
- integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
-
lodash.uniq@^4.2.0, lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -22258,7 +22401,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -23752,7 +23895,7 @@ object-hash@^1.3.1:
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
-object-inspect@^1.12.2, object-inspect@^1.13.3:
+object-inspect@^1.13.3, object-inspect@^1.13.4:
version "1.13.4"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
@@ -23777,14 +23920,16 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
-object.assign@^4.1.2, object.assign@^4.1.4:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
- integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
+object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.7:
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d"
+ integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- has-symbols "^1.0.3"
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+ has-symbols "^1.1.0"
object-keys "^1.1.1"
object.entries@^1.1.6:
@@ -23796,14 +23941,15 @@ object.entries@^1.1.6:
define-properties "^1.1.4"
es-abstract "^1.20.4"
-object.fromentries@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
- integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
+object.fromentries@^2.0.6, object.fromentries@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
+ integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
object.getownpropertydescriptors@^2.1.1:
version "2.1.2"
@@ -23814,6 +23960,15 @@ object.getownpropertydescriptors@^2.1.1:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
+object.groupby@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e"
+ integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+
object.hasown@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92"
@@ -23829,14 +23984,15 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
-object.values@^1.1.1, object.values@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
- integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
+object.values@^1.1.6, object.values@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216"
+ integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
@@ -23986,17 +24142,17 @@ optional-require@^1.1.8:
dependencies:
require-at "^1.0.6"
-optionator@^0.9.1:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
- integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+optionator@^0.9.3:
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+ integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
dependencies:
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
- word-wrap "^1.2.3"
+ word-wrap "^1.2.5"
ora@5.4.1, ora@^5.1.0, ora@^5.4.0, ora@^5.4.1:
version "5.4.1"
@@ -24067,6 +24223,15 @@ osenv@^0.1.3:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
+own-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
+ integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==
+ dependencies:
+ get-intrinsic "^1.2.6"
+ object-keys "^1.1.1"
+ safe-push-apply "^1.0.0"
+
p-defer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
@@ -24367,12 +24532,12 @@ parse-gitignore@^2.0.0:
resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-2.0.0.tgz#81156b265115c507129f3faea067b8476da3b642"
integrity sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+parse-imports-exports@^0.2.4:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz#e3fb3b5e264cfb55c25b5dfcbe7f410f8dc4e7af"
+ integrity sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==
dependencies:
- error-ex "^1.2.0"
+ parse-statements "1.0.11"
parse-json@^4.0.0:
version "4.0.0"
@@ -24432,6 +24597,11 @@ parse-path@^7.0.0:
dependencies:
protocols "^2.0.0"
+parse-statements@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/parse-statements/-/parse-statements-1.0.11.tgz#8787c5d383ae5746568571614be72b0689584344"
+ integrity sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==
+
parse-static-imports@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/parse-static-imports/-/parse-static-imports-1.1.0.tgz#ae2f18f18da1a993080ae406a5219455c0bbad5d"
@@ -24601,13 +24771,6 @@ path-to-regexp@^8.0.0, path-to-regexp@^8.1.0:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f"
integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==
-path-type@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
- integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
- dependencies:
- pify "^2.0.0"
-
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -24750,7 +24913,7 @@ pify@5.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f"
integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==
-pify@^2.0.0, pify@^2.3.0:
+pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
@@ -24839,13 +25002,6 @@ piscina@3.2.0:
optionalDependencies:
nice-napi "^1.0.2"
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
pkg-dir@^4.1.0, pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -25750,7 +25906,7 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-progress@^2.0.0, progress@^2.0.3:
+progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
@@ -26211,14 +26367,6 @@ read-package-up@^11.0.0:
read-pkg "^9.0.0"
type-fest "^4.6.0"
-read-pkg-up@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
- integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
- dependencies:
- find-up "^2.0.0"
- read-pkg "^2.0.0"
-
read-pkg-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
@@ -26236,15 +26384,6 @@ read-pkg-up@^7.0.1:
read-pkg "^5.2.0"
type-fest "^0.8.1"
-read-pkg@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
- integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
- dependencies:
- load-json-file "^2.0.0"
- normalize-package-data "^2.3.2"
- path-type "^2.0.0"
-
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -26476,6 +26615,20 @@ reflect-metadata@^0.2.2:
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==
+reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
+ integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==
+ dependencies:
+ call-bind "^1.0.8"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.9"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ get-intrinsic "^1.2.7"
+ get-proto "^1.0.1"
+ which-builtin-type "^1.2.1"
+
regenerate-unicode-properties@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c"
@@ -26536,17 +26689,19 @@ regexp-tree@^0.1.27:
resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd"
integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==
-regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.1:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
- integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19"
+ integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
dependencies:
- call-bind "^1.0.6"
+ call-bind "^1.0.8"
define-properties "^1.2.1"
es-errors "^1.3.0"
- set-function-name "^2.0.1"
+ get-proto "^1.0.1"
+ gopd "^1.2.0"
+ set-function-name "^2.0.2"
-regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0:
+regexpp@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@@ -26563,11 +26718,6 @@ regexpu-core@^5.3.1:
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.1.0"
-regextras@^0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2"
- integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==
-
regjsparser@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
@@ -27229,6 +27379,17 @@ sade@^1.7.3, sade@^1.8.1:
dependencies:
mri "^1.1.0"
+safe-array-concat@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
+ integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
+ dependencies:
+ call-bind "^1.0.8"
+ call-bound "^1.0.2"
+ get-intrinsic "^1.2.6"
+ has-symbols "^1.1.0"
+ isarray "^2.0.5"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -27244,14 +27405,22 @@ safe-json-parse@~1.0.1:
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57"
integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=
-safe-regex-test@^1.0.0:
+safe-push-apply@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
- integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
+ resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5"
+ integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.3"
- is-regex "^1.1.4"
+ es-errors "^1.3.0"
+ isarray "^2.0.5"
+
+safe-regex-test@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1"
+ integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
+ dependencies:
+ call-bound "^1.0.2"
+ es-errors "^1.3.0"
+ is-regex "^1.2.1"
safe-regex@^1.1.0:
version "1.1.0"
@@ -27457,7 +27626,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semve
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3, semver@^7.7.2:
+semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3, semver@^7.7.2:
version "7.7.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
@@ -27587,7 +27756,7 @@ set-function-length@^1.2.2:
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
-set-function-name@^2.0.1:
+set-function-name@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
@@ -27597,6 +27766,15 @@ set-function-name@^2.0.1:
functions-have-names "^1.2.3"
has-property-descriptors "^1.0.2"
+set-proto@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e"
+ integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==
+ dependencies:
+ dunder-proto "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -27926,15 +28104,6 @@ slash@^5.1.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce"
integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
-slice-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
- integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
- dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
-
sliced@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
@@ -28250,7 +28419,7 @@ spdx-exceptions@^2.1.0:
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1:
+spdx-expression-parse@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
@@ -28258,6 +28427,14 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1:
spdx-exceptions "^2.1.0"
spdx-license-ids "^3.0.0"
+spdx-expression-parse@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794"
+ integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
spdx-expression-validate@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/spdx-expression-validate/-/spdx-expression-validate-2.0.0.tgz#25c9408e1c63fad94fff5517bb7101ffcd23350b"
@@ -28449,12 +28626,13 @@ stdin-discarder@^0.1.0:
dependencies:
bl "^5.0.0"
-stop-iteration-iterator@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
- integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
+stop-iteration-iterator@^1.0.0, stop-iteration-iterator@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad"
+ integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==
dependencies:
- internal-slot "^1.0.4"
+ es-errors "^1.3.0"
+ internal-slot "^1.1.0"
stoppable@1.1.0, stoppable@^1.1.0:
version "1.1.0"
@@ -28580,23 +28758,37 @@ string.prototype.matchall@^4.0.5, string.prototype.matchall@^4.0.6, string.proto
regexp.prototype.flags "^1.4.3"
side-channel "^1.0.4"
-string.prototype.trimend@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
- integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
+string.prototype.trim@^1.2.10:
+ version "1.2.10"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81"
+ integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.19.5"
+ call-bind "^1.0.8"
+ call-bound "^1.0.2"
+ define-data-property "^1.1.4"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.5"
+ es-object-atoms "^1.0.0"
+ has-property-descriptors "^1.0.2"
-string.prototype.trimstart@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
- integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
+string.prototype.trimend@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942"
+ integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.19.5"
+ call-bind "^1.0.8"
+ call-bound "^1.0.2"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
+ integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
string_decoder@0.10, string_decoder@~0.10.x:
version "0.10.31"
@@ -28713,7 +28905,7 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -28994,18 +29186,6 @@ system-architecture@^0.1.0:
resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d"
integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==
-table@^6.0.9:
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
- integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
- dependencies:
- ajv "^8.0.1"
- lodash.clonedeep "^4.5.0"
- lodash.truncate "^4.4.2"
- slice-ansi "^4.0.0"
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
-
tap-parser@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721"
@@ -29589,10 +29769,10 @@ ts-algebra@^2.0.0:
resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-2.0.0.tgz#4e3e0953878f26518fce7f6bb115064a65388b7a"
integrity sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==
-ts-api-utils@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331"
- integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
+ts-api-utils@^1.3.0:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064"
+ integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==
ts-api-utils@^2.1.0:
version "2.1.0"
@@ -29646,14 +29826,14 @@ tsconfck@^3.0.0, tsconfck@^3.1.3:
resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.3.tgz#a8202f51dab684c426314796cdb0bbd0fe0cdf80"
integrity sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==
-tsconfig-paths@^3.9.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
- integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
+tsconfig-paths@^3.15.0:
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
+ integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
dependencies:
"@types/json5" "^0.0.29"
- json5 "^1.0.1"
- minimist "^1.2.0"
+ json5 "^1.0.2"
+ minimist "^1.2.6"
strip-bom "^3.0.0"
tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0:
@@ -29823,6 +30003,42 @@ typed-array-buffer@^1.0.3:
es-errors "^1.3.0"
is-typed-array "^1.1.14"
+typed-array-byte-length@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce"
+ integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==
+ dependencies:
+ call-bind "^1.0.8"
+ for-each "^0.3.3"
+ gopd "^1.2.0"
+ has-proto "^1.2.0"
+ is-typed-array "^1.1.14"
+
+typed-array-byte-offset@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355"
+ integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.8"
+ for-each "^0.3.3"
+ gopd "^1.2.0"
+ has-proto "^1.2.0"
+ is-typed-array "^1.1.15"
+ reflect.getprototypeof "^1.0.9"
+
+typed-array-length@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
+ integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+ reflect.getprototypeof "^1.0.6"
+
typed-assert@^1.0.8:
version "1.0.9"
resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213"
@@ -29907,15 +30123,15 @@ ultrahtml@^1.5.3, ultrahtml@^1.6.0:
resolved "https://registry.yarnpkg.com/ultrahtml/-/ultrahtml-1.6.0.tgz#0d1aad7bbfeae512438d30e799c11622127a1ac8"
integrity sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==
-unbox-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
- integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+unbox-primitive@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
+ integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==
dependencies:
- call-bind "^1.0.2"
+ call-bound "^1.0.3"
has-bigints "^1.0.2"
- has-symbols "^1.0.3"
- which-boxed-primitive "^1.0.2"
+ has-symbols "^1.1.0"
+ which-boxed-primitive "^1.1.1"
unbuild@^2.0.0:
version "2.0.0"
@@ -30615,7 +30831,7 @@ v8-compile-cache-lib@^3.0.1:
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
-v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0:
+v8-compile-cache@2.3.0, v8-compile-cache@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
@@ -31438,18 +31654,37 @@ whatwg-url@^5.0.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-which-boxed-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
- integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+which-boxed-primitive@^1.0.2, which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e"
+ integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==
dependencies:
- is-bigint "^1.0.1"
- is-boolean-object "^1.1.0"
- is-number-object "^1.0.4"
- is-string "^1.0.5"
- is-symbol "^1.0.3"
+ is-bigint "^1.1.0"
+ is-boolean-object "^1.2.1"
+ is-number-object "^1.1.1"
+ is-string "^1.1.1"
+ is-symbol "^1.1.1"
-which-collection@^1.0.1:
+which-builtin-type@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e"
+ integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==
+ dependencies:
+ call-bound "^1.0.2"
+ function.prototype.name "^1.1.6"
+ has-tostringtag "^1.0.2"
+ is-async-function "^2.0.0"
+ is-date-object "^1.1.0"
+ is-finalizationregistry "^1.1.0"
+ is-generator-function "^1.0.10"
+ is-regex "^1.2.1"
+ is-weakref "^1.0.2"
+ isarray "^2.0.5"
+ which-boxed-primitive "^1.1.0"
+ which-collection "^1.0.2"
+ which-typed-array "^1.1.16"
+
+which-collection@^1.0.1, which-collection@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
@@ -31480,7 +31715,7 @@ which-pm@^2.1.1:
load-yaml-file "^0.2.0"
path-exists "^4.0.0"
-which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.2:
+which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.19, which-typed-array@^1.1.2:
version "1.1.19"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
@@ -31591,10 +31826,10 @@ winston@^3.10.0, winston@^3.17.0:
triple-beam "^1.3.0"
winston-transport "^4.9.0"
-word-wrap@^1.2.3:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
- integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
+word-wrap@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
wordwrap@^0.0.3:
version "0.0.3"