From 69bc2b4ed46050adcc5849ea15a0e4c60f5b4630 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Thu, 11 Jun 2026 15:32:41 +0200 Subject: [PATCH 01/19] =?UTF-8?q?=F0=9F=91=B7=20build=20package=20modules?= =?UTF-8?q?=20with=20tsdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the TypeScript compiler API (`ts.createProgram`/`program.emit`) with tsdown (Rolldown-based) for transpiling package modules to CJS and ESM. Declarations are still emitted by `tsc` (`--emitDeclarationOnly`): Rolldown's declaration bundler restructures modules in ways that break older TypeScript consumers (inline `type` modifiers, `.js` import extensions, rewritten re-exports that trip `isolatedModules` on const enums). Keeping tsc for `.d.ts` makes the declaration output identical to before, preserving the TS 3.8+ compatibility matrix. Declarations are emitted only next to the CJS output, which every package's `types` field already points at. oxc lowers the one decorator in the codebase (`@monitored`) to a helper imported from `@oxc-project/runtime` and cannot inline it. To avoid adding a runtime dependency, the used helpers are vendored into the output and their imports rewritten to local copies. Build-time constants (`__BUILD_ENV__*__`) are inlined via tsdown's `define` option instead of post-processing emitted files. ESM output uses the `.mjs` extension, so the `--esm-type-module` flag (which wrote `esm/package.json`) is no longer needed. --- LICENSE-3rdparty.csv | 2 + package.json | 2 + packages/browser-core/package.json | 2 +- packages/browser-debugger/package.json | 2 +- packages/browser-logs/package.json | 2 +- packages/browser-rum-angular/package.json | 2 +- packages/browser-rum-core/package.json | 2 +- packages/browser-rum-nextjs/package.json | 2 +- packages/browser-rum-nuxt/package.json | 2 +- .../browser-rum-react/internal/package.json | 2 +- packages/browser-rum-react/package.json | 2 +- .../react-router-v6/package.json | 2 +- .../react-router-v7/package.json | 2 +- .../tanstack-router/package.json | 2 +- packages/browser-rum-slim/package.json | 2 +- packages/browser-rum-vue/package.json | 2 +- .../vue-router-v4/package.json | 2 +- .../internal-synthetics/package.json | 2 +- packages/browser-rum/internal/package.json | 2 +- packages/browser-rum/package.json | 2 +- packages/js-core/package.json | 4 +- packages/js-core/time/package.json | 2 +- scripts/build/build-package.ts | 163 ++++--- yarn.lock | 420 ++++++++++++++++-- 24 files changed, 510 insertions(+), 119 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 449a71811c..af179809c0 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -20,6 +20,7 @@ dev,@angular/router,MIT,Copyright (c) 2010-2024 Google LLC dev,@eslint/js,MIT,Copyright OpenJS Foundation and other contributors, dev,@jsdevtools/coverage-istanbul-loader,MIT,Copyright (c) 2015 James Messinger dev,@ngtools/webpack,MIT,Copyright (c) 2017 Google LLC +dev,@oxc-project/runtime,MIT,Copyright (c) 2024-present VoidZero Inc. & Contributors dev,@playwright/test,Apache-2.0,Copyright Microsoft Corporation dev,@swc/core,Apache-2.0,Copyright (c) SWC Contributors dev,@tanstack/react-router,MIT,Copyright (c) 2021-present Tanner Linsley @@ -85,6 +86,7 @@ dev,swc-loader,MIT,Copyright (c) SWC Contributors dev,terser-webpack-plugin,MIT,Copyright JS Foundation and other contributors dev,ts-loader,MIT,Copyright 2015 TypeStrong dev,tsconfig-paths-webpack-plugin,MIT,Copyright 2016 Jonas Kello +dev,tsdown,MIT,Copyright (c) 2025-present VoidZero Inc. & Contributors dev,typescript,Apache-2.0,Copyright Microsoft Corporation dev,typescript-eslint,MIT,Copyright (c) 2019 typescript-eslint and other contributors dev,undici,MIT,Copyright (c) Matteo Collina and Undici contributors diff --git a/package.json b/package.json index 9b523a481a..b7491fdf5e 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7", "@eslint/js": "10.0.1", "@jsdevtools/coverage-istanbul-loader": "3.0.5", + "@oxc-project/runtime": "0.135.0", "@playwright/test": "1.60.0", "@swc/core": "1.15.40", "@types/busboy": "1.5.4", @@ -91,6 +92,7 @@ "terser-webpack-plugin": "5.6.1", "ts-loader": "9.6.0", "tsconfig-paths-webpack-plugin": "4.2.0", + "tsdown": "0.22.2", "typedoc": "0.28.19", "typescript": "6.0.3", "typescript-eslint": "8.60.1", diff --git a/packages/browser-core/package.json b/packages/browser-core/package.json index 9b58ac14e0..c7dbbc4556 100644 --- a/packages/browser-core/package.json +++ b/packages/browser-core/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/index.js", - "module": "esm/index.js", + "module": "esm/index.mjs", "types": "cjs/index.d.ts", "sideEffects": false, "files": [ diff --git a/packages/browser-debugger/package.json b/packages/browser-debugger/package.json index 7b2b286822..c714fd7fda 100644 --- a/packages/browser-debugger/package.json +++ b/packages/browser-debugger/package.json @@ -3,7 +3,7 @@ "private": true, "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "bundle/**/*.js", diff --git a/packages/browser-logs/package.json b/packages/browser-logs/package.json index 1b799bf6d1..ee7b47a360 100644 --- a/packages/browser-logs/package.json +++ b/packages/browser-logs/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "bundle/**/*.js", diff --git a/packages/browser-rum-angular/package.json b/packages/browser-rum-angular/package.json index e8ba6e8883..d92586a46a 100644 --- a/packages/browser-rum-angular/package.json +++ b/packages/browser-rum-angular/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-core/package.json b/packages/browser-rum-core/package.json index 09b8e2bfe5..cf4bcc730f 100644 --- a/packages/browser-rum-core/package.json +++ b/packages/browser-rum-core/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/index.js", - "module": "esm/index.js", + "module": "esm/index.mjs", "types": "cjs/index.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-nextjs/package.json b/packages/browser-rum-nextjs/package.json index c94a589408..1149c1be57 100644 --- a/packages/browser-rum-nextjs/package.json +++ b/packages/browser-rum-nextjs/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-nuxt/package.json b/packages/browser-rum-nuxt/package.json index e6b186e146..0e1e7265ef 100644 --- a/packages/browser-rum-nuxt/package.json +++ b/packages/browser-rum-nuxt/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-react/internal/package.json b/packages/browser-rum-react/internal/package.json index aecaa32b8f..277f56f523 100644 --- a/packages/browser-rum-react/internal/package.json +++ b/packages/browser-rum-react/internal/package.json @@ -2,6 +2,6 @@ "name": "@datadog/browser-rum-react/internal", "private": true, "main": "../cjs/entries/internal.js", - "module": "../esm/entries/internal.js", + "module": "../esm/entries/internal.mjs", "types": "../cjs/entries/internal.d.ts" } diff --git a/packages/browser-rum-react/package.json b/packages/browser-rum-react/package.json index 5639176032..27338109b0 100644 --- a/packages/browser-rum-react/package.json +++ b/packages/browser-rum-react/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-react/react-router-v6/package.json b/packages/browser-rum-react/react-router-v6/package.json index ad4381cc1a..fc35be8425 100644 --- a/packages/browser-rum-react/react-router-v6/package.json +++ b/packages/browser-rum-react/react-router-v6/package.json @@ -2,6 +2,6 @@ "name": "@datadog/browser-rum-react/react-router-v6", "private": true, "main": "../cjs/entries/reactRouterV6.js", - "module": "../esm/entries/reactRouterV6.js", + "module": "../esm/entries/reactRouterV6.mjs", "types": "../cjs/entries/reactRouterV6.d.ts" } diff --git a/packages/browser-rum-react/react-router-v7/package.json b/packages/browser-rum-react/react-router-v7/package.json index 6c43dbb1bc..b8ee4700e3 100644 --- a/packages/browser-rum-react/react-router-v7/package.json +++ b/packages/browser-rum-react/react-router-v7/package.json @@ -2,6 +2,6 @@ "name": "@datadog/browser-rum-react/react-router-v7", "private": true, "main": "../cjs/entries/reactRouterV7.js", - "module": "../esm/entries/reactRouterV7.js", + "module": "../esm/entries/reactRouterV7.mjs", "types": "../cjs/entries/reactRouterV7.d.ts" } diff --git a/packages/browser-rum-react/tanstack-router/package.json b/packages/browser-rum-react/tanstack-router/package.json index 230c7f45d4..3096a4d412 100644 --- a/packages/browser-rum-react/tanstack-router/package.json +++ b/packages/browser-rum-react/tanstack-router/package.json @@ -2,6 +2,6 @@ "name": "@datadog/browser-rum-react/tanstack-router", "private": true, "main": "../cjs/entries/tanstackRouter.js", - "module": "../esm/entries/tanstackRouter.js", + "module": "../esm/entries/tanstackRouter.mjs", "types": "../cjs/entries/tanstackRouter.d.ts" } diff --git a/packages/browser-rum-slim/package.json b/packages/browser-rum-slim/package.json index 66e95a60f2..821c6c4be2 100644 --- a/packages/browser-rum-slim/package.json +++ b/packages/browser-rum-slim/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "bundle/**/*.js", diff --git a/packages/browser-rum-vue/package.json b/packages/browser-rum-vue/package.json index cc7306bfd1..b769653e5e 100644 --- a/packages/browser-rum-vue/package.json +++ b/packages/browser-rum-vue/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "cjs", diff --git a/packages/browser-rum-vue/vue-router-v4/package.json b/packages/browser-rum-vue/vue-router-v4/package.json index 4b0b7d3c8d..e59781d84c 100644 --- a/packages/browser-rum-vue/vue-router-v4/package.json +++ b/packages/browser-rum-vue/vue-router-v4/package.json @@ -2,6 +2,6 @@ "name": "@datadog/browser-rum-vue/vue-router-v4", "private": true, "main": "../cjs/entries/vueRouter.js", - "module": "../esm/entries/vueRouter.js", + "module": "../esm/entries/vueRouter.mjs", "types": "../cjs/entries/vueRouter.d.ts" } diff --git a/packages/browser-rum/internal-synthetics/package.json b/packages/browser-rum/internal-synthetics/package.json index f4e77c132a..a3ef736eb8 100644 --- a/packages/browser-rum/internal-synthetics/package.json +++ b/packages/browser-rum/internal-synthetics/package.json @@ -1,6 +1,6 @@ { "private": true, "main": "../cjs/entries/internalSynthetics.js", - "module": "../esm/entries/internalSynthetics.js", + "module": "../esm/entries/internalSynthetics.mjs", "types": "../cjs/entries/internalSynthetics.d.ts" } diff --git a/packages/browser-rum/internal/package.json b/packages/browser-rum/internal/package.json index d5ac78d881..2e656a6194 100644 --- a/packages/browser-rum/internal/package.json +++ b/packages/browser-rum/internal/package.json @@ -1,6 +1,6 @@ { "private": true, "main": "../cjs/entries/internal.js", - "module": "../esm/entries/internal.js", + "module": "../esm/entries/internal.mjs", "types": "../cjs/entries/internal.d.ts" } diff --git a/packages/browser-rum/package.json b/packages/browser-rum/package.json index 660cd35cb5..f890838d19 100644 --- a/packages/browser-rum/package.json +++ b/packages/browser-rum/package.json @@ -3,7 +3,7 @@ "version": "7.3.0", "license": "Apache-2.0", "main": "cjs/entries/main.js", - "module": "esm/entries/main.js", + "module": "esm/entries/main.mjs", "types": "cjs/entries/main.d.ts", "files": [ "bundle/**/*.js", diff --git a/packages/js-core/package.json b/packages/js-core/package.json index 26ab136654..33362e1456 100644 --- a/packages/js-core/package.json +++ b/packages/js-core/package.json @@ -5,7 +5,7 @@ "sideEffects": false, "exports": { "./time": { - "import": "./esm/time.js", + "import": "./esm/time.mjs", "require": "./cjs/time.js", "types": "./cjs/time.d.ts" } @@ -19,7 +19,7 @@ "!src/**/*.specHelper.ts" ], "scripts": { - "build": "node ../../scripts/build/build-package.ts --modules --esm-type-module", + "build": "node ../../scripts/build/build-package.ts --modules", "prepack": "yarn build" }, "repository": { diff --git a/packages/js-core/time/package.json b/packages/js-core/time/package.json index 2219a01403..92566ca297 100644 --- a/packages/js-core/time/package.json +++ b/packages/js-core/time/package.json @@ -1,6 +1,6 @@ { "private": true, "main": "../cjs/time.js", - "module": "../esm/time.js", + "module": "../esm/time.mjs", "types": "../cjs/time.d.ts" } diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index 20b9dd43fb..140c8df821 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,9 +1,11 @@ import fs from 'node:fs/promises' -import { parseArgs } from 'node:util' import path from 'node:path' import { globSync } from 'node:fs' +import { createRequire } from 'node:module' +import { parseArgs } from 'node:util' import ts from 'typescript' import webpack from 'webpack' +import { build as tsdownBuild } from 'tsdown' import webpackBase from '../../webpack.base.ts' import { printLog, runMain } from '../lib/executionUtils.ts' @@ -23,28 +25,12 @@ runMain(async () => { type: 'boolean', default: false, }, - 'esm-type-module': { - type: 'boolean', - default: false, - }, }, }) if (values.modules) { printLog('Building modules...') - await buildModules({ - outDir: './cjs', - module: 'commonjs', - verbose: values.verbose, - }) - await buildModules({ - outDir: './esm', - module: 'es2020', - verbose: values.verbose, - }) - if (values['esm-type-module']) { - await fs.writeFile('./esm/package.json', `${JSON.stringify({ type: 'module' }, null, 2)}\n`) - } + await buildModules({ verbose: values.verbose }) } if (values.bundle) { @@ -90,74 +76,121 @@ async function buildBundle({ filename, verbose }: { filename: string; verbose: b } } -async function buildModules({ outDir, module, verbose }: { outDir: string; module: string; verbose: boolean }) { - await fs.rm(outDir, { recursive: true, force: true }) - - // TODO: in the future, consider building packages with something else than typescript (ex: - // rspack, tsdown...) - - const diagnostics = buildWithTypeScript({ - extends: '../../tsconfig.base.json', - compilerOptions: { - declaration: true, - allowJs: true, - module, - rootDir: './src/', - outDir, - paths: {}, +async function buildModules({ verbose }: { verbose: boolean }) { + await fs.rm('./cjs', { recursive: true, force: true }) + await fs.rm('./esm', { recursive: true, force: true }) + + // Transpile the source with tsdown (Rolldown). We let TypeScript emit the declaration files (see + // emitDeclarations) rather than tsdown, because Rolldown's declaration bundler restructures + // modules in ways that break compatibility with older TypeScript versions (e.g. inline `type` + // modifiers, rewritten re-exports). `define` inlines build-time constants at transpile time. + await tsdownBuild({ + entry: ['./src/**/*.ts', '!./src/**/*.spec.ts', '!./src/**/*.specHelper.ts'], + format: { + cjs: { + outDir: './cjs', + }, + esm: { + outDir: './esm', + }, }, - include: ['./src'], - exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], + platform: 'neutral', + unbundle: true, + dts: false, + tsconfig: '../../tsconfig.base.json', + // Mark all non-relative imports as external (cross-package deps and node_modules) + deps: { neverBundle: /^[^./]/ }, + define: Object.fromEntries( + buildEnvKeys.map((key) => [`__BUILD_ENV__${key}__`, JSON.stringify(getBuildEnvValue(key))]) + ), + sourcemap: true, + logLevel: verbose ? 'info' : 'error', }) - if (diagnostics.length) { - printTypeScriptDiagnostics(diagnostics) - throw new Error('Failed to build package due to TypeScript errors') - } + await vendorOxcRuntimeHelpers('./cjs', { module: 'cjs' }) + await vendorOxcRuntimeHelpers('./esm', { module: 'esm' }) - await replaceBuildEnvInDirectory(outDir, { verbose }) + // Declarations only need to live next to the CommonJS output: every package's `types` field (and + // the `types` condition in `exports`) points at `./cjs`, so both CJS and ESM consumers resolve + // the same declaration files. + emitDeclarations('./cjs') } -async function replaceBuildEnvInDirectory(dir: string, { verbose }: { verbose: boolean }) { - for (const relativePath of globSync('**/*.js', { cwd: dir })) { - const absolutePath = path.resolve(dir, relativePath) - if (await modifyFile(absolutePath, (content: string) => replaceBuildEnv(content))) { - if (verbose) { - printLog(`Replaced BuildEnv in ${absolutePath}`) - } +const OXC_HELPERS_DIRNAME = '_oxc-helpers' +const OXC_HELPER_IMPORT_RE = /@oxc-project\/runtime\/helpers\/([\w-]+)/g + +// tsdown/Rolldown lowers TypeScript features (e.g. decorators) using helpers imported from +// `@oxc-project/runtime`, and oxc cannot inline them. To avoid shipping that runtime as a +// dependency, we vendor the few helpers actually used: copy them into the output directory and +// rewrite the bare imports to point at the local copies. The helpers are self-contained (the same +// snippets `tsc` would have inlined), so no transitive resolution is needed. +async function vendorOxcRuntimeHelpers(outDir: string, { module }: { module: 'cjs' | 'esm' }) { + const ext = module === 'esm' ? '.mjs' : '.js' + const files = globSync(`**/*${ext}`, { cwd: outDir }).map((file) => path.resolve(outDir, file)) + + const usedHelpers = new Set() + for (const file of files) { + for (const [, helper] of (await fs.readFile(file, 'utf8')).matchAll(OXC_HELPER_IMPORT_RE)) { + usedHelpers.add(helper) } } - function replaceBuildEnv(content: string): string { - return buildEnvKeys.reduce( - (content, key) => content.replaceAll(`__BUILD_ENV__${key}__`, () => JSON.stringify(getBuildEnvValue(key))), - content + if (usedHelpers.size === 0) { + return + } + + const require = createRequire(import.meta.url) + const runtimeRoot = path.dirname(require.resolve('@oxc-project/runtime/package.json')) + const helpersDir = path.resolve(outDir, OXC_HELPERS_DIRNAME) + await fs.mkdir(helpersDir, { recursive: true }) + + for (const helper of usedHelpers) { + // The CJS and ESM helper variants live in separate directories within the runtime package. + const source = path.join(runtimeRoot, 'src/helpers', module === 'esm' ? 'esm' : '', `${helper}.js`) + await fs.copyFile(source, path.join(helpersDir, `${helper}${ext}`)) + } + + for (const file of files) { + await modifyFile(file, (content: string) => + content.replace(OXC_HELPER_IMPORT_RE, (_, helper: string) => { + const relativePath = path.relative(path.dirname(file), path.join(helpersDir, `${helper}${ext}`)) + const specifier = relativePath.startsWith('.') ? relativePath : `./${relativePath}` + // CJS `require` resolves extensionless specifiers; ESM imports need the explicit extension. + return module === 'esm' ? specifier : specifier.slice(0, -ext.length) + }) ) } } -function buildWithTypeScript(configuration: { [key: string]: unknown }) { - const parsedConfiguration = ts.parseJsonConfigFileContent( - configuration, +function emitDeclarations(outDir: string) { + const { options, fileNames } = ts.parseJsonConfigFileContent( + { + extends: '../../tsconfig.base.json', + compilerOptions: { + declaration: true, + emitDeclarationOnly: true, + allowJs: true, + rootDir: './src/', + outDir, + paths: {}, + }, + include: ['./src'], + exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], + }, ts.sys, process.cwd(), undefined, 'tsconfig.json' // just used in messages ) - const host = ts.createCompilerHost(parsedConfiguration.options) - const program = ts.createProgram({ - rootNames: parsedConfiguration.fileNames, - options: parsedConfiguration.options, - host, - }) - + const program = ts.createProgram({ rootNames: fileNames, options }) const emitResult = program.emit() - if (emitResult.emitSkipped) { - throw new Error('No files were emitted') - } + const diagnostics = [...ts.getPreEmitDiagnostics(program), ...emitResult.diagnostics] - return [...ts.getPreEmitDiagnostics(program), ...emitResult.diagnostics] + if (diagnostics.length) { + printTypeScriptDiagnostics(diagnostics) + throw new Error('Failed to build package due to TypeScript errors') + } } function printTypeScriptDiagnostics(diagnostics: ts.Diagnostic[]) { diff --git a/yarn.lock b/yarn.lock index 28e48e8ea5..faa2fff000 100644 --- a/yarn.lock +++ b/yarn.lock @@ -155,30 +155,30 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/generator@npm:7.29.7" +"@babel/generator@npm:8.0.0-rc.6, @babel/generator@npm:^8.0.0-rc.4": + version: 8.0.0-rc.6 + resolution: "@babel/generator@npm:8.0.0-rc.6" dependencies: - "@babel/parser": "npm:^7.29.7" - "@babel/types": "npm:^7.29.7" + "@babel/parser": "npm:^8.0.0-rc.6" + "@babel/types": "npm:^8.0.0-rc.6" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" + "@types/jsesc": "npm:^2.5.0" jsesc: "npm:^3.0.2" - checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + checksum: 10c0/bb28a5afee0c28cb68c7910091348938840fe3e5a5f382db5279d50c3fbb99584b718f0862aaaed0fdc95561e771874d3593170d4604f90c56278840651a57ec languageName: node linkType: hard -"@babel/generator@npm:^8.0.0-rc.4": - version: 8.0.0-rc.6 - resolution: "@babel/generator@npm:8.0.0-rc.6" +"@babel/generator@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/generator@npm:7.29.7" dependencies: - "@babel/parser": "npm:^8.0.0-rc.6" - "@babel/types": "npm:^8.0.0-rc.6" + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" - "@types/jsesc": "npm:^2.5.0" jsesc: "npm:^3.0.2" - checksum: 10c0/bb28a5afee0c28cb68c7910091348938840fe3e5a5f382db5279d50c3fbb99584b718f0862aaaed0fdc95561e771874d3593170d4604f90c56278840651a57ec + checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 languageName: node linkType: hard @@ -239,6 +239,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:8.0.0-rc.6, @babel/helper-validator-identifier@npm:^8.0.0-rc.6": + version: 8.0.0-rc.6 + resolution: "@babel/helper-validator-identifier@npm:8.0.0-rc.6" + checksum: 10c0/85e0f2c746a06467bf952f9ac1cda1dc63702a88bdfa1297d41de42452acbb9dfc5699bf6f4ed928fb3b50bde9635a6e686e1d253fadf47fb27618632e198ce5 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.28.5, @babel/helper-validator-identifier@npm:^7.29.7": version: 7.29.7 resolution: "@babel/helper-validator-identifier@npm:7.29.7" @@ -246,13 +253,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^8.0.0-rc.6": - version: 8.0.0-rc.6 - resolution: "@babel/helper-validator-identifier@npm:8.0.0-rc.6" - checksum: 10c0/85e0f2c746a06467bf952f9ac1cda1dc63702a88bdfa1297d41de42452acbb9dfc5699bf6f4ed928fb3b50bde9635a6e686e1d253fadf47fb27618632e198ce5 - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.29.7": version: 7.29.7 resolution: "@babel/helper-validator-option@npm:7.29.7" @@ -270,25 +270,25 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.28.5, @babel/parser@npm:^7.29.2, @babel/parser@npm:^7.29.3, @babel/parser@npm:^7.29.7": - version: 7.29.7 - resolution: "@babel/parser@npm:7.29.7" +"@babel/parser@npm:8.0.0-rc.6, @babel/parser@npm:^8.0.0-beta.4, @babel/parser@npm:^8.0.0-rc.6": + version: 8.0.0-rc.6 + resolution: "@babel/parser@npm:8.0.0-rc.6" dependencies: - "@babel/types": "npm:^7.29.7" + "@babel/types": "npm:^8.0.0-rc.6" bin: parser: ./bin/babel-parser.js - checksum: 10c0/65133038f80b54a714d6027cb77cee3f9a6b5c4c6842ce674301e13947cbcbfa8055e63acaf1b84c085d34226a14425b2c2b97b829e0e226d2e8f1299942a51d + checksum: 10c0/de4fd82e7733532e6c0a71766f9fc1cae3daefc999be8ae8c8c2155e7af32c3b4fdb14cfc3a010c969113fd6dc698cd0603ec13579bff38e8159e36cbff94449 languageName: node linkType: hard -"@babel/parser@npm:^8.0.0-rc.6": - version: 8.0.0-rc.6 - resolution: "@babel/parser@npm:8.0.0-rc.6" +"@babel/parser@npm:^7.28.5, @babel/parser@npm:^7.29.2, @babel/parser@npm:^7.29.3, @babel/parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/parser@npm:7.29.7" dependencies: - "@babel/types": "npm:^8.0.0-rc.6" + "@babel/types": "npm:^7.29.7" bin: parser: ./bin/babel-parser.js - checksum: 10c0/de4fd82e7733532e6c0a71766f9fc1cae3daefc999be8ae8c8c2155e7af32c3b4fdb14cfc3a010c969113fd6dc698cd0603ec13579bff38e8159e36cbff94449 + checksum: 10c0/65133038f80b54a714d6027cb77cee3f9a6b5c4c6842ce674301e13947cbcbfa8055e63acaf1b84c085d34226a14425b2c2b97b829e0e226d2e8f1299942a51d languageName: node linkType: hard @@ -1741,6 +1741,13 @@ __metadata: languageName: node linkType: hard +"@oxc-project/runtime@npm:0.135.0": + version: 0.135.0 + resolution: "@oxc-project/runtime@npm:0.135.0" + checksum: 10c0/3ccf1e7b4882928426abf36f632bd724979dd1bd38e40ff5fa8b1aa7ddf943331a3d03654c16529c6fee278b6179f60a6dbe43d2767b0a06446079b2dd6b814f + languageName: node + linkType: hard + "@oxc-project/types@npm:=0.133.0": version: 0.133.0 resolution: "@oxc-project/types@npm:0.133.0" @@ -1748,6 +1755,13 @@ __metadata: languageName: node linkType: hard +"@oxc-project/types@npm:=0.134.0": + version: 0.134.0 + resolution: "@oxc-project/types@npm:0.134.0" + checksum: 10c0/d90ee664206091d539a24de6ec703bdb2124e1181680609ac3c27326273a3189c5bb6e0177f3171c85a78e8c01eb43a9903cbbe13257053c7df141c030579c16 + languageName: node + linkType: hard + "@package-json/types@npm:^0.0.12": version: 0.0.12 resolution: "@package-json/types@npm:0.0.12" @@ -1817,6 +1831,15 @@ __metadata: languageName: node linkType: hard +"@quansync/fs@npm:^1.0.0": + version: 1.0.0 + resolution: "@quansync/fs@npm:1.0.0" + dependencies: + quansync: "npm:^1.0.0" + checksum: 10c0/41a7e145d4fc349eaeac20ee7ffe0c876a7c26b2268d5704b462b3e7379091221336e315b2b346d5b07a531502a41cad15c9f374800cc60b6339d074ef99aa16 + languageName: node + linkType: hard + "@remix-run/router@npm:1.23.3": version: 1.23.3 resolution: "@remix-run/router@npm:1.23.3" @@ -1831,6 +1854,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-android-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-android-arm64@npm:1.1.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-darwin-arm64@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-darwin-arm64@npm:1.0.3" @@ -1838,6 +1868,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-darwin-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-darwin-arm64@npm:1.1.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-darwin-x64@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-darwin-x64@npm:1.0.3" @@ -1845,6 +1882,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-darwin-x64@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-darwin-x64@npm:1.1.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rolldown/binding-freebsd-x64@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-freebsd-x64@npm:1.0.3" @@ -1852,6 +1896,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-freebsd-x64@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-freebsd-x64@npm:1.1.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.3" @@ -1859,6 +1910,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm-gnueabihf@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.1.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@rolldown/binding-linux-arm64-gnu@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.3" @@ -1866,6 +1924,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm64-gnu@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.1.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-arm64-musl@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.3" @@ -1873,6 +1938,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm64-musl@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.1.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rolldown/binding-linux-ppc64-gnu@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.3" @@ -1880,6 +1952,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-ppc64-gnu@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.1.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-s390x-gnu@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.3" @@ -1887,6 +1966,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-s390x-gnu@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.1.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-x64-gnu@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.3" @@ -1894,6 +1980,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-x64-gnu@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.1.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-x64-musl@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.3" @@ -1901,6 +1994,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-x64-musl@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.1.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rolldown/binding-openharmony-arm64@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.3" @@ -1908,6 +2008,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-openharmony-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.1.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-wasm32-wasi@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.3" @@ -1919,6 +2026,17 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-wasm32-wasi@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.1.0" + dependencies: + "@emnapi/core": "npm:1.10.0" + "@emnapi/runtime": "npm:1.10.0" + "@napi-rs/wasm-runtime": "npm:^1.1.4" + conditions: cpu=wasm32 + languageName: node + linkType: hard + "@rolldown/binding-win32-arm64-msvc@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.3" @@ -1926,6 +2044,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-win32-arm64-msvc@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.1.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-win32-x64-msvc@npm:1.0.3": version: 1.0.3 resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.3" @@ -1933,6 +2058,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-win32-x64-msvc@npm:1.1.0": + version: 1.1.0 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.1.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rolldown/pluginutils@npm:^1.0.0": version: 1.0.1 resolution: "@rolldown/pluginutils@npm:1.0.1" @@ -3434,6 +3566,13 @@ __metadata: languageName: node linkType: hard +"ansis@npm:^4.3.1": + version: 4.3.1 + resolution: "ansis@npm:4.3.1" + checksum: 10c0/d1a48090f9c33b18f254a3496e5336a20391a51140b552a1c0bc38710ae7c8bc36a62658f28759797d7bce15e89b893e9ef1962ea1ea42a291d112263f6e593c + languageName: node + linkType: hard + "anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -3482,6 +3621,17 @@ __metadata: languageName: node linkType: hard +"ast-kit@npm:^3.0.0-beta.1": + version: 3.0.0-beta.1 + resolution: "ast-kit@npm:3.0.0-beta.1" + dependencies: + "@babel/parser": "npm:^8.0.0-beta.4" + estree-walker: "npm:^3.0.3" + pathe: "npm:^2.0.3" + checksum: 10c0/27a0309d495100e088c6aa6449e2bb79fdf6321c42bb73c196d646935ff788c2202d8dfc19e04499c623f0676cbe5d6baaeb645ede4b349fac2bd5c276419d5a + languageName: node + linkType: hard + "ast-types@npm:^0.13.4": version: 0.13.4 resolution: "ast-types@npm:0.13.4" @@ -3704,6 +3854,13 @@ __metadata: languageName: node linkType: hard +"birpc@npm:^4.0.0": + version: 4.0.0 + resolution: "birpc@npm:4.0.0" + checksum: 10c0/61f4e893ff4c5948b2c587c971c04883af0d8b2658d4632c8e77073db9f9e8b040402f985d56308021890b2ad32ef8392e36a8335cab1e3771d99e1b025d1af6 + languageName: node + linkType: hard + "bluebird@npm:~3.7": version: 3.7.2 resolution: "bluebird@npm:3.7.2" @@ -3815,6 +3972,7 @@ __metadata: "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" + "@oxc-project/runtime": "npm:0.135.0" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" @@ -3861,6 +4019,7 @@ __metadata: terser-webpack-plugin: "npm:5.6.1" ts-loader: "npm:9.6.0" tsconfig-paths-webpack-plugin: "npm:4.2.0" + tsdown: "npm:0.22.2" typedoc: "npm:0.28.19" typescript: "npm:6.0.3" typescript-eslint: "npm:8.60.1" @@ -4690,7 +4849,7 @@ __metadata: languageName: node linkType: hard -"defu@npm:^6.1.4, defu@npm:^6.1.6": +"defu@npm:^6.1.4, defu@npm:^6.1.6, defu@npm:^6.1.7": version: 6.1.7 resolution: "defu@npm:6.1.7" checksum: 10c0/e6635388103c8be3c574ac31302f6930e5e6eeedba32cb1b30cf993c7d9fb571aec2485446dfa23bfa63e55e66156fe109027a9695db82a50f931e91e8d4bedb @@ -4903,6 +5062,18 @@ __metadata: languageName: node linkType: hard +"dts-resolver@npm:^3.0.0": + version: 3.0.0 + resolution: "dts-resolver@npm:3.0.0" + peerDependencies: + oxc-resolver: ">=11.0.0" + peerDependenciesMeta: + oxc-resolver: + optional: true + checksum: 10c0/ae52c4e09b43def702b02d7edbfa04798522907f22879809f8890e5c61fc762403f46a1c415c2d1a6440b01960bbaf98c72def1771b0962d3b15fec40983a4ab + languageName: node + linkType: hard + "dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" @@ -4993,6 +5164,13 @@ __metadata: languageName: node linkType: hard +"empathic@npm:^2.0.1": + version: 2.0.1 + resolution: "empathic@npm:2.0.1" + checksum: 10c0/577f2868bfcad4ffbf911b57c75016125eb8cc8a7d32cf2d3e9fbcb31bfe6e9e6b66d9457ac34ccb2cd38bff353b3af34287899e0360b8c561ff6d4a048aca62 + languageName: node + linkType: hard + "encodeurl@npm:^2.0.0": version: 2.0.0 resolution: "encodeurl@npm:2.0.0" @@ -6106,6 +6284,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:5.0.0-beta.5": + version: 5.0.0-beta.5 + resolution: "get-tsconfig@npm:5.0.0-beta.5" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/fd96e2a7d872703d8c5d7ed5d5d884a4e33f6cd9f012aa68a3c7aae700b84b502e41c06641a3d0667b1e8c8f7d497857dd6d3bba3987d2e5f59d95e49fb6e3b9 + languageName: node + linkType: hard + "get-tsconfig@npm:^4.10.1": version: 4.14.0 resolution: "get-tsconfig@npm:4.14.0" @@ -6298,7 +6485,7 @@ __metadata: languageName: node linkType: hard -"hookable@npm:^6.1.0": +"hookable@npm:^6.1.0, hookable@npm:^6.1.1": version: 6.1.1 resolution: "hookable@npm:6.1.1" checksum: 10c0/bb46cd9ffc0a997af21febd97835da4e59a6989adec73dc3c215fcc44c7ac01de4781f251c3d420bf45862d2592a695f5f0de095b6f5df52db8afb5166938212 @@ -6568,6 +6755,13 @@ __metadata: languageName: node linkType: hard +"import-without-cache@npm:^0.4.0": + version: 0.4.0 + resolution: "import-without-cache@npm:0.4.0" + checksum: 10c0/5ba51078dc15f08cd1ef4e12f3d274a7e1906319ac831b5ddf036a033ab3b4395264b93c64be8b6050be27546754a4c3a84fcfbe8e827ba221203cc47c608a46 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -9156,6 +9350,13 @@ __metadata: languageName: node linkType: hard +"quansync@npm:^1.0.0": + version: 1.0.0 + resolution: "quansync@npm:1.0.0" + checksum: 10c0/076542634399a0cc46078baab6b31acee7a88c5a435234345f645aedaa42bc6a63836e655fb39b1b21a83c98ec86a4b73ec5e2b2d6f3fdc22711eeeff9463253 + languageName: node + linkType: hard + "quick-format-unescaped@npm:^4.0.3": version: 4.0.4 resolution: "quick-format-unescaped@npm:4.0.4" @@ -9570,6 +9771,37 @@ __metadata: languageName: node linkType: hard +"rolldown-plugin-dts@npm:^0.25.2": + version: 0.25.2 + resolution: "rolldown-plugin-dts@npm:0.25.2" + dependencies: + "@babel/generator": "npm:8.0.0-rc.6" + "@babel/helper-validator-identifier": "npm:8.0.0-rc.6" + "@babel/parser": "npm:8.0.0-rc.6" + ast-kit: "npm:^3.0.0-beta.1" + birpc: "npm:^4.0.0" + dts-resolver: "npm:^3.0.0" + get-tsconfig: "npm:5.0.0-beta.5" + obug: "npm:^2.1.1" + peerDependencies: + "@ts-macro/tsc": ^0.3.6 + "@typescript/native-preview": ">=7.0.0-dev.20260325.1" + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 + vue-tsc: ~3.2.0 + peerDependenciesMeta: + "@ts-macro/tsc": + optional: true + "@typescript/native-preview": + optional: true + typescript: + optional: true + vue-tsc: + optional: true + checksum: 10c0/8bfce712dcbabf8a3554cf1e106644920b500790382c7ec4026f27293db267dd0709d85c6587680b3d1d4591908281bc435f2469c265b258c129d00a579f7bbd + languageName: node + linkType: hard + "rolldown@npm:1.0.3": version: 1.0.3 resolution: "rolldown@npm:1.0.3" @@ -9628,6 +9860,64 @@ __metadata: languageName: node linkType: hard +"rolldown@npm:~1.1.0": + version: 1.1.0 + resolution: "rolldown@npm:1.1.0" + dependencies: + "@oxc-project/types": "npm:=0.134.0" + "@rolldown/binding-android-arm64": "npm:1.1.0" + "@rolldown/binding-darwin-arm64": "npm:1.1.0" + "@rolldown/binding-darwin-x64": "npm:1.1.0" + "@rolldown/binding-freebsd-x64": "npm:1.1.0" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.1.0" + "@rolldown/binding-linux-arm64-gnu": "npm:1.1.0" + "@rolldown/binding-linux-arm64-musl": "npm:1.1.0" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.1.0" + "@rolldown/binding-linux-s390x-gnu": "npm:1.1.0" + "@rolldown/binding-linux-x64-gnu": "npm:1.1.0" + "@rolldown/binding-linux-x64-musl": "npm:1.1.0" + "@rolldown/binding-openharmony-arm64": "npm:1.1.0" + "@rolldown/binding-wasm32-wasi": "npm:1.1.0" + "@rolldown/binding-win32-arm64-msvc": "npm:1.1.0" + "@rolldown/binding-win32-x64-msvc": "npm:1.1.0" + "@rolldown/pluginutils": "npm:^1.0.0" + dependenciesMeta: + "@rolldown/binding-android-arm64": + optional: true + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-ppc64-gnu": + optional: true + "@rolldown/binding-linux-s390x-gnu": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-openharmony-arm64": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + bin: + rolldown: ./bin/cli.mjs + checksum: 10c0/9502a829af6aa274d4b93944f737b5c65b929b39ce67f5fed0f48235b1bf6d0806d54b4e26eb13dff311518afb8b4d60d503e96156cc941c1ed5afed37dac031 + languageName: node + linkType: hard + "router@npm:^2.2.0": version: 2.2.0 resolution: "router@npm:2.2.0" @@ -10608,7 +10898,7 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^1.1.1": +"tinyexec@npm:^1.1.1, tinyexec@npm:^1.2.4": version: 1.2.4 resolution: "tinyexec@npm:1.2.4" checksum: 10c0/153b8db6b080194b558ff145b9cffc36b80a6e07babd644dcfbe49c807eee668c876049d28bdee90b96304476f883352f2dad91b3f86bc23832532f4363e66ff @@ -10735,6 +11025,60 @@ __metadata: languageName: node linkType: hard +"tsdown@npm:0.22.2": + version: 0.22.2 + resolution: "tsdown@npm:0.22.2" + dependencies: + ansis: "npm:^4.3.1" + cac: "npm:^7.0.0" + defu: "npm:^6.1.7" + empathic: "npm:^2.0.1" + hookable: "npm:^6.1.1" + import-without-cache: "npm:^0.4.0" + obug: "npm:^2.1.1" + picomatch: "npm:^4.0.4" + rolldown: "npm:~1.1.0" + rolldown-plugin-dts: "npm:^0.25.2" + semver: "npm:^7.8.1" + tinyexec: "npm:^1.2.4" + tinyglobby: "npm:^0.2.17" + tree-kill: "npm:^1.2.2" + unconfig-core: "npm:^7.5.0" + peerDependencies: + "@arethetypeswrong/core": ^0.18.1 + "@tsdown/css": 0.22.2 + "@tsdown/exe": 0.22.2 + "@vitejs/devtools": "*" + publint: ^0.3.8 + tsx: "*" + typescript: ^5.0.0 || ^6.0.0 + unplugin-unused: ^0.5.0 + unrun: "*" + peerDependenciesMeta: + "@arethetypeswrong/core": + optional: true + "@tsdown/css": + optional: true + "@tsdown/exe": + optional: true + "@vitejs/devtools": + optional: true + publint: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + unrun: + optional: true + bin: + tsdown: ./dist/run.mjs + checksum: 10c0/5c36e071fe32b42759dcc8f37491b03984aac8111fd4a97bb421924d47d9233a46e8d37e8ea98a122ad2ac2e84bd6a30ed633e9086ca79f9ff97c06a71a72be2 + languageName: node + linkType: hard + "tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.8.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" @@ -10891,6 +11235,16 @@ __metadata: languageName: node linkType: hard +"unconfig-core@npm:^7.5.0": + version: 7.5.0 + resolution: "unconfig-core@npm:7.5.0" + dependencies: + "@quansync/fs": "npm:^1.0.0" + quansync: "npm:^1.0.0" + checksum: 10c0/9c9f745254aa8e267140430a432353d17ee87f625b0ea0668e189d88736828d117b66bd2dd41f1d48bd40d44d5b7c7d160e8b7996a60c8f484e2975ef73c7cb7 + languageName: node + linkType: hard + "undici-types@npm:>=7.24.0 <7.24.7": version: 7.24.6 resolution: "undici-types@npm:7.24.6" From e52e4e1142f3189c860fe5bd524cba8b32a0b87a Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 08:15:20 +0200 Subject: [PATCH 02/19] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20remove=20@oxc-projec?= =?UTF-8?q?t/runtime=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace @monitored decorator on Logger.logImplementation with callMonitored to avoid tsdown emitting oxc runtime helpers - Remove vendorOxcRuntimeHelpers workaround from build-package.ts - Drop @oxc-project/runtime devDependency and its LICENSE-3rdparty.csv entry --- LICENSE-3rdparty.csv | 1 - package.json | 1 - packages/browser-logs/src/domain/logger.ts | 63 +++++++++++----------- scripts/build/build-package.ts | 53 ------------------ yarn.lock | 8 --- 5 files changed, 32 insertions(+), 94 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index af179809c0..d7cbc322be 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -20,7 +20,6 @@ dev,@angular/router,MIT,Copyright (c) 2010-2024 Google LLC dev,@eslint/js,MIT,Copyright OpenJS Foundation and other contributors, dev,@jsdevtools/coverage-istanbul-loader,MIT,Copyright (c) 2015 James Messinger dev,@ngtools/webpack,MIT,Copyright (c) 2017 Google LLC -dev,@oxc-project/runtime,MIT,Copyright (c) 2024-present VoidZero Inc. & Contributors dev,@playwright/test,Apache-2.0,Copyright Microsoft Corporation dev,@swc/core,Apache-2.0,Copyright (c) SWC Contributors dev,@tanstack/react-router,MIT,Copyright (c) 2021-present Tanner Linsley diff --git a/package.json b/package.json index b7491fdf5e..95609323c9 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7", "@eslint/js": "10.0.1", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@oxc-project/runtime": "0.135.0", "@playwright/test": "1.60.0", "@swc/core": "1.15.40", "@types/busboy": "1.5.4", diff --git a/packages/browser-logs/src/domain/logger.ts b/packages/browser-logs/src/domain/logger.ts index 114e1b038d..08e6609b10 100644 --- a/packages/browser-logs/src/domain/logger.ts +++ b/packages/browser-logs/src/domain/logger.ts @@ -6,7 +6,7 @@ import { combine, createContextManager, ErrorSource, - monitored, + callMonitored, sanitize, NonErrorPrefix, createHandlingStack, @@ -55,7 +55,6 @@ export class Logger { } } - @monitored logImplementation( message: string, messageContext?: object, @@ -63,38 +62,40 @@ export class Logger { error?: Error, handlingStack?: string ) { - const sanitizedMessageContext = sanitize(messageContext) as Context - let context: Context - - if (error !== undefined && error !== null) { - const rawError = computeRawError({ - originalError: error, - nonErrorPrefix: NonErrorPrefix.PROVIDED, - source: ErrorSource.LOGGER, - handling: ErrorHandling.HANDLED, - startClocks: clocksNow(), - }) - - context = combine( + callMonitored(() => { + const sanitizedMessageContext = sanitize(messageContext) as Context + let context: Context + + if (error !== undefined && error !== null) { + const rawError = computeRawError({ + originalError: error, + nonErrorPrefix: NonErrorPrefix.PROVIDED, + source: ErrorSource.LOGGER, + handling: ErrorHandling.HANDLED, + startClocks: clocksNow(), + }) + + context = combine( + { + error: createErrorFieldFromRawError(rawError, { includeMessage: true }), + }, + rawError.context, + sanitizedMessageContext + ) + } else { + context = sanitizedMessageContext + } + + this.handleLogStrategy( { - error: createErrorFieldFromRawError(rawError, { includeMessage: true }), + message: sanitize(message)!, + context, + status, }, - rawError.context, - sanitizedMessageContext + this, + handlingStack ) - } else { - context = sanitizedMessageContext - } - - this.handleLogStrategy( - { - message: sanitize(message)!, - context, - status, - }, - this, - handlingStack - ) + }) } log(message: string, messageContext?: object, status: StatusType = StatusType.info, error?: Error) { diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index 140c8df821..8b2b1eb357 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,7 +1,4 @@ import fs from 'node:fs/promises' -import path from 'node:path' -import { globSync } from 'node:fs' -import { createRequire } from 'node:module' import { parseArgs } from 'node:util' import ts from 'typescript' import webpack from 'webpack' @@ -9,7 +6,6 @@ import { build as tsdownBuild } from 'tsdown' import webpackBase from '../../webpack.base.ts' import { printLog, runMain } from '../lib/executionUtils.ts' -import { modifyFile } from '../lib/filesUtils.ts' import { buildEnvKeys, getBuildEnvValue } from '../lib/buildEnv.ts' runMain(async () => { @@ -107,61 +103,12 @@ async function buildModules({ verbose }: { verbose: boolean }) { logLevel: verbose ? 'info' : 'error', }) - await vendorOxcRuntimeHelpers('./cjs', { module: 'cjs' }) - await vendorOxcRuntimeHelpers('./esm', { module: 'esm' }) - // Declarations only need to live next to the CommonJS output: every package's `types` field (and // the `types` condition in `exports`) points at `./cjs`, so both CJS and ESM consumers resolve // the same declaration files. emitDeclarations('./cjs') } -const OXC_HELPERS_DIRNAME = '_oxc-helpers' -const OXC_HELPER_IMPORT_RE = /@oxc-project\/runtime\/helpers\/([\w-]+)/g - -// tsdown/Rolldown lowers TypeScript features (e.g. decorators) using helpers imported from -// `@oxc-project/runtime`, and oxc cannot inline them. To avoid shipping that runtime as a -// dependency, we vendor the few helpers actually used: copy them into the output directory and -// rewrite the bare imports to point at the local copies. The helpers are self-contained (the same -// snippets `tsc` would have inlined), so no transitive resolution is needed. -async function vendorOxcRuntimeHelpers(outDir: string, { module }: { module: 'cjs' | 'esm' }) { - const ext = module === 'esm' ? '.mjs' : '.js' - const files = globSync(`**/*${ext}`, { cwd: outDir }).map((file) => path.resolve(outDir, file)) - - const usedHelpers = new Set() - for (const file of files) { - for (const [, helper] of (await fs.readFile(file, 'utf8')).matchAll(OXC_HELPER_IMPORT_RE)) { - usedHelpers.add(helper) - } - } - - if (usedHelpers.size === 0) { - return - } - - const require = createRequire(import.meta.url) - const runtimeRoot = path.dirname(require.resolve('@oxc-project/runtime/package.json')) - const helpersDir = path.resolve(outDir, OXC_HELPERS_DIRNAME) - await fs.mkdir(helpersDir, { recursive: true }) - - for (const helper of usedHelpers) { - // The CJS and ESM helper variants live in separate directories within the runtime package. - const source = path.join(runtimeRoot, 'src/helpers', module === 'esm' ? 'esm' : '', `${helper}.js`) - await fs.copyFile(source, path.join(helpersDir, `${helper}${ext}`)) - } - - for (const file of files) { - await modifyFile(file, (content: string) => - content.replace(OXC_HELPER_IMPORT_RE, (_, helper: string) => { - const relativePath = path.relative(path.dirname(file), path.join(helpersDir, `${helper}${ext}`)) - const specifier = relativePath.startsWith('.') ? relativePath : `./${relativePath}` - // CJS `require` resolves extensionless specifiers; ESM imports need the explicit extension. - return module === 'esm' ? specifier : specifier.slice(0, -ext.length) - }) - ) - } -} - function emitDeclarations(outDir: string) { const { options, fileNames } = ts.parseJsonConfigFileContent( { diff --git a/yarn.lock b/yarn.lock index faa2fff000..08c141bb6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1741,13 +1741,6 @@ __metadata: languageName: node linkType: hard -"@oxc-project/runtime@npm:0.135.0": - version: 0.135.0 - resolution: "@oxc-project/runtime@npm:0.135.0" - checksum: 10c0/3ccf1e7b4882928426abf36f632bd724979dd1bd38e40ff5fa8b1aa7ddf943331a3d03654c16529c6fee278b6179f60a6dbe43d2767b0a06446079b2dd6b814f - languageName: node - linkType: hard - "@oxc-project/types@npm:=0.133.0": version: 0.133.0 resolution: "@oxc-project/types@npm:0.133.0" @@ -3972,7 +3965,6 @@ __metadata: "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" - "@oxc-project/runtime": "npm:0.135.0" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" From 482b404da0d6cf528ce02a0af1627a2d7813f9e9 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 08:52:59 +0200 Subject: [PATCH 03/19] =?UTF-8?q?=F0=9F=91=B7=20fix=20browser-rum=20build?= =?UTF-8?q?=20race=20condition=20with=20browser-worker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Declare @datadog/browser-worker as a devDependency of browser-rum and switch the build command to --topological-dev so yarn's workspace topological ordering guarantees browser-worker is built before browser-rum. Previously, the parallel build could start browser-rum before browser-worker produced bundle/worker.js, causing a flaky ENOENT error in getBuildEnvValue. --- package.json | 6 +- packages/browser-rum/package.json | 1 + scripts/build/build-package.ts | 33 +- yarn.lock | 549 ++++++++++++++++-------------- 4 files changed, 311 insertions(+), 278 deletions(-) diff --git a/package.json b/package.json index 95609323c9..a85784a33d 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,13 @@ ], "type": "module", "scripts": { - "build": "yarn workspaces foreach --all --parallel --topological run build", - "build:bundle": "yarn workspaces foreach --all --parallel run build:bundle", + "build": "yarn workspaces foreach --all --parallel --topological-dev run build", + "build:bundle": "yarn workspaces foreach --all --parallel --topological-dev run build:bundle", "build:apps": "node scripts/build/build-test-apps.ts", "build:docs:json": "typedoc --logLevel Verbose --json ./generated-docs.json", "build:docs:html": "typedoc --out ./generated-docs", "serve:docs": "yarn build:docs:html && npx http-server ./generated-docs -p 8080 -o", - "pack": "yarn workspaces foreach --all --parallel --topological --include '@datadog/*' exec yarn pack", + "pack": "yarn workspaces foreach --all --parallel --topological-dev --include '@datadog/*' exec yarn pack", "format": "prettier --check .", "lint": "NODE_OPTIONS='--max-old-space-size=4096' eslint .", "typecheck": "tsc -b --noEmit true", diff --git a/packages/browser-rum/package.json b/packages/browser-rum/package.json index f890838d19..728c0331bb 100644 --- a/packages/browser-rum/package.json +++ b/packages/browser-rum/package.json @@ -39,6 +39,7 @@ "directory": "packages/browser-rum" }, "devDependencies": { + "@datadog/browser-worker": "7.2.0", "@types/pako": "2.0.4", "pako": "2.1.0" }, diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index 8b2b1eb357..5a1e31945f 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,4 +1,5 @@ import fs from 'node:fs/promises' +import { readFileSync, globSync } from 'node:fs' import { parseArgs } from 'node:util' import ts from 'typescript' import webpack from 'webpack' @@ -72,15 +73,25 @@ async function buildBundle({ filename, verbose }: { filename: string; verbose: b } } -async function buildModules({ verbose }: { verbose: boolean }) { - await fs.rm('./cjs', { recursive: true, force: true }) - await fs.rm('./esm', { recursive: true, force: true }) +// Returns only the build-env keys actually referenced in this package's sources. tsdown's `define` +// is eager: every listed key is computed up front, for every package. WORKER_STRING reads (and may +// rebuild) packages/browser-worker/bundle/worker.js, so computing it for packages that don't use it +// makes them race against browser-worker's own concurrent rebuild. Filtering to referenced keys +// mirrors webpack's lazy DefinePlugin.runtimeValue, so only browser-rum (the sole consumer) touches +// the worker bundle. +function referencedBuildEnvKeys() { + const files = globSync('./src/**/*.ts', { exclude: ['**/*.spec.*', '**/*.specHelper.*'] }) + const content = files.map((file) => readFileSync(file, 'utf8')).join('\n') + return buildEnvKeys.filter((key) => content.includes(`__BUILD_ENV__${key}__`)) +} +async function buildModules({ verbose }: { verbose: boolean }) { // Transpile the source with tsdown (Rolldown). We let TypeScript emit the declaration files (see // emitDeclarations) rather than tsdown, because Rolldown's declaration bundler restructures // modules in ways that break compatibility with older TypeScript versions (e.g. inline `type` - // modifiers, rewritten re-exports). `define` inlines build-time constants at transpile time. + // modifiers, rewritten re-exports). await tsdownBuild({ + clean: true, entry: ['./src/**/*.ts', '!./src/**/*.spec.ts', '!./src/**/*.specHelper.ts'], format: { cjs: { @@ -97,19 +108,19 @@ async function buildModules({ verbose }: { verbose: boolean }) { // Mark all non-relative imports as external (cross-package deps and node_modules) deps: { neverBundle: /^[^./]/ }, define: Object.fromEntries( - buildEnvKeys.map((key) => [`__BUILD_ENV__${key}__`, JSON.stringify(getBuildEnvValue(key))]) + referencedBuildEnvKeys().map((key) => [`__BUILD_ENV__${key}__`, JSON.stringify(getBuildEnvValue(key))]) ), sourcemap: true, logLevel: verbose ? 'info' : 'error', }) - // Declarations only need to live next to the CommonJS output: every package's `types` field (and - // the `types` condition in `exports`) points at `./cjs`, so both CJS and ESM consumers resolve - // the same declaration files. - emitDeclarations('./cjs') + emitDeclarations() } -function emitDeclarations(outDir: string) { +// Declarations only need to live next to the CommonJS output: every package's `types` field (and +// the `types` condition in `exports`) points at `./cjs`, so both CJS and ESM consumers resolve +// the same declaration files. +function emitDeclarations() { const { options, fileNames } = ts.parseJsonConfigFileContent( { extends: '../../tsconfig.base.json', @@ -118,7 +129,7 @@ function emitDeclarations(outDir: string) { emitDeclarationOnly: true, allowJs: true, rootDir: './src/', - outDir, + outDir: './cjs', paths: {}, }, include: ['./src'], diff --git a/yarn.lock b/yarn.lock index 08c141bb6d..7840e6defb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,11 +352,11 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:7.3.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": +"@datadog/browser-core@npm:7.2.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": version: 0.0.0-use.local resolution: "@datadog/browser-core@workspace:packages/browser-core" dependencies: - "@datadog/js-core": "npm:0.0.2" + "@datadog/js-core": "npm:0.0.1" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" languageName: unknown @@ -366,8 +366,8 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-debugger@workspace:packages/browser-debugger" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" acorn: "npm:8.16.0" languageName: unknown linkType: soft @@ -376,10 +376,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-logs@workspace:packages/browser-logs" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" peerDependencies: - "@datadog/browser-rum": 7.3.0 + "@datadog/browser-rum": 7.2.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true @@ -395,9 +395,9 @@ __metadata: "@angular/core": "npm:22.0.0" "@angular/platform-browser": "npm:22.0.0" "@angular/router": "npm:22.0.0" - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" rxjs: "npm:7.8.2" peerDependencies: "@angular/core": ">=15 <=22" @@ -406,12 +406,12 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-core@npm:7.3.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": +"@datadog/browser-rum-core@npm:7.2.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": version: 0.0.0-use.local resolution: "@datadog/browser-rum-core@workspace:packages/browser-rum-core" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" ajv: "npm:8.20.0" languageName: unknown linkType: soft @@ -420,14 +420,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nextjs@workspace:packages/browser-rum-nextjs" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/browser-rum-react": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@types/react": "npm:19.2.17" - next: "npm:16.2.7" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-rum-react": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@types/react": "npm:19.2.15" + next: "npm:16.2.6" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" peerDependencies: next: ">=13.0.0" react: ">=18.0.0" @@ -443,9 +443,9 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nuxt@workspace:packages/browser-rum-nuxt" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -466,20 +466,20 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-react@npm:7.3.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": +"@datadog/browser-rum-react@npm:7.2.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": version: 0.0.0-use.local resolution: "@datadog/browser-rum-react@workspace:packages/browser-rum-react" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@tanstack/react-router": "npm:1.170.15" - "@types/react": "npm:19.2.17" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@tanstack/react-router": "npm:1.170.10" + "@types/react": "npm:19.2.15" "@types/react-dom": "npm:19.2.3" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" - react-router: "npm:7.17.0" - react-router-dom: "npm:7.17.0" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" + react-router: "npm:7.16.0" + react-router-dom: "npm:7.16.0" react-router-dom-6: "npm:react-router-dom@6.30.4" peerDependencies: "@tanstack/react-router": ">=1.64.0 <2" @@ -506,10 +506,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-slim@workspace:packages/browser-rum-slim" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" peerDependencies: - "@datadog/browser-logs": 7.3.0 + "@datadog/browser-logs": 7.2.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -520,10 +520,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-vue@workspace:packages/browser-rum-vue" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@vue/test-utils": "npm:2.4.11" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@vue/test-utils": "npm:2.4.10" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -545,13 +545,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum@workspace:packages/browser-rum" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-worker": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" peerDependencies: - "@datadog/browser-logs": 7.3.0 + "@datadog/browser-logs": 7.2.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -566,43 +567,36 @@ __metadata: "@datadog/browser-logs": "workspace:*" "@datadog/browser-rum": "workspace:*" "@datadog/browser-rum-core": "workspace:*" - "@mantine/core": "npm:9.3.0" - "@mantine/hooks": "npm:9.3.0" + "@mantine/core": "npm:9.2.2" + "@mantine/hooks": "npm:9.2.2" "@tabler/icons-react": "npm:3.44.0" - "@types/chrome": "npm:0.1.43" - "@types/react": "npm:19.2.17" + "@types/chrome": "npm:0.1.42" + "@types/react": "npm:19.2.15" "@types/react-dom": "npm:19.2.3" "@wxt-dev/module-react": "npm:1.2.2" clsx: "npm:2.1.1" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" typescript: "npm:6.0.3" wxt: "npm:0.20.26" languageName: unknown linkType: soft -"@datadog/browser-worker@workspace:packages/browser-worker": +"@datadog/browser-worker@npm:7.2.0, @datadog/browser-worker@workspace:packages/browser-worker": version: 0.0.0-use.local resolution: "@datadog/browser-worker@workspace:packages/browser-worker" dependencies: - "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-core": "npm:7.2.0" webpack: "npm:5.107.2" languageName: unknown linkType: soft -"@datadog/js-core@npm:0.0.2, @datadog/js-core@workspace:packages/js-core": +"@datadog/js-core@npm:0.0.1, @datadog/js-core@workspace:packages/js-core": version: 0.0.0-use.local resolution: "@datadog/js-core@workspace:packages/js-core" languageName: unknown linkType: soft -"@datadog/rum-events-format@DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7": - version: 0.0.0 - resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=02c94b31a2676458a156ed627f3edcd87254beb7" - checksum: 10c0/4a14c1afb23b3e4a0f631f8a1f077d6abab913c82f1145e1585002b488038b00ed19ce16c8840c20c7d94e5d113bc43c48bbb69f46038533cd53d3ebbcbc74c5 - languageName: node - linkType: hard - "@devicefarmer/adbkit-logcat@npm:^2.1.2": version: 2.1.3 resolution: "@devicefarmer/adbkit-logcat@npm:2.1.3" @@ -1633,9 +1627,9 @@ __metadata: languageName: node linkType: hard -"@mantine/core@npm:9.3.0": - version: 9.3.0 - resolution: "@mantine/core@npm:9.3.0" +"@mantine/core@npm:9.2.2": + version: 9.2.2 + resolution: "@mantine/core@npm:9.2.2" dependencies: "@floating-ui/react": "npm:^0.27.19" clsx: "npm:^2.1.1" @@ -1643,19 +1637,19 @@ __metadata: react-remove-scroll: "npm:^2.7.2" type-fest: "npm:^5.6.0" peerDependencies: - "@mantine/hooks": 9.3.0 + "@mantine/hooks": 9.2.2 react: ^19.2.0 react-dom: ^19.2.0 - checksum: 10c0/e381a68412a5c7decc4fb124ea0c5a8631f9bbb4fd26e015f97093c164c06101090d040e0fe980f2999eb21b37666a6d6fc70f92655018aa1f406299380c53e8 + checksum: 10c0/7c1f82a5c340eb149e865a45d36703ea71da7d2c8171e7c5f5b368df8b45f241c86eeee9863cb8595536b2ac1bbd4b04d5bd8fcd5ed28321dd9ae2e0f3450d1e languageName: node linkType: hard -"@mantine/hooks@npm:9.3.0": - version: 9.3.0 - resolution: "@mantine/hooks@npm:9.3.0" +"@mantine/hooks@npm:9.2.2": + version: 9.2.2 + resolution: "@mantine/hooks@npm:9.2.2" peerDependencies: react: ^19.2.0 - checksum: 10c0/ed95a2551b34719d43d7b195cf05248498f20add736a2e4ec582b677e5a9efb53b562010df79dc9af7db087e76e9ac42192443c9d03f76963b5dba7dfc2e0a63 + checksum: 10c0/2b8c21bc255a3dfbe97529b06d83fd6eb054e1d14d70ceefa8d656978c42fde4933e32feff01cd92c73a3d8ca64779b0d87c00e55314259b00a42a34f027707c languageName: node linkType: hard @@ -1671,65 +1665,65 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:16.2.7": - version: 16.2.7 - resolution: "@next/env@npm:16.2.7" - checksum: 10c0/d5928d76047ee4f04cf2e5e47fce6c348ee010c7d3105d631e70299bb4ac8d0c53cefbb3415ce0e0e918e89fbcde0817ccac1be220b41cdc4490f989c7d166a7 +"@next/env@npm:16.2.6": + version: 16.2.6 + resolution: "@next/env@npm:16.2.6" + checksum: 10c0/466722ce30a9561d29c08a7ba78091a47fef3644f422d04751c7124a24457ffe11eb25bb6c59c1e1d57735d9c68c58d185cc19ea58befd7a9c5b81dc05ca550d languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-darwin-arm64@npm:16.2.7" +"@next/swc-darwin-arm64@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-darwin-arm64@npm:16.2.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-darwin-x64@npm:16.2.7" +"@next/swc-darwin-x64@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-darwin-x64@npm:16.2.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-arm64-gnu@npm:16.2.7" +"@next/swc-linux-arm64-gnu@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-arm64-musl@npm:16.2.7" +"@next/swc-linux-arm64-musl@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-x64-gnu@npm:16.2.7" +"@next/swc-linux-x64-gnu@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-x64-musl@npm:16.2.7" +"@next/swc-linux-x64-musl@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-x64-musl@npm:16.2.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-win32-arm64-msvc@npm:16.2.7" +"@next/swc-win32-arm64-msvc@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-win32-x64-msvc@npm:16.2.7" +"@next/swc-win32-x64-msvc@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2310,18 +2304,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-router@npm:1.170.15": - version: 1.170.15 - resolution: "@tanstack/react-router@npm:1.170.15" +"@tanstack/react-router@npm:1.170.10": + version: 1.170.10 + resolution: "@tanstack/react-router@npm:1.170.10" dependencies: "@tanstack/history": "npm:1.162.0" "@tanstack/react-store": "npm:^0.9.3" - "@tanstack/router-core": "npm:1.171.13" + "@tanstack/router-core": "npm:1.171.8" isbot: "npm:^5.1.22" peerDependencies: react: ">=18.0.0 || >=19.0.0" react-dom: ">=18.0.0 || >=19.0.0" - checksum: 10c0/779cd0278de657925797cf60091f2183eb8ad842a3dd9e98e814de82a67465fdb109422e1fa130a6658daeac4c5efcd5c48918b971665ca976af5be352aba094 + checksum: 10c0/c57bf65625ab3deb5e557bdb1418591bc55eefa0197524deeb737220cbe4d9473dfd0f0b759f97021d2ecd6fd9340a87201933438ab3eb3ee34106419f5a5fad languageName: node linkType: hard @@ -2338,15 +2332,15 @@ __metadata: languageName: node linkType: hard -"@tanstack/router-core@npm:1.171.13": - version: 1.171.13 - resolution: "@tanstack/router-core@npm:1.171.13" +"@tanstack/router-core@npm:1.171.8": + version: 1.171.8 + resolution: "@tanstack/router-core@npm:1.171.8" dependencies: "@tanstack/history": "npm:1.162.0" cookie-es: "npm:^3.0.0" seroval: "npm:^1.5.4" seroval-plugins: "npm:^1.5.4" - checksum: 10c0/10db2af6b64146e5273d0b378f873c518f790d4a20cd597cb783aaf718efc9c600e326b97f068f0892b1c5cb2ac912f68846b6d25f43cc0c97ef240494b55c94 + checksum: 10c0/ff1f894de2cdb4c013ae48f71fc0f6bdfdbdd34d3c927915ac3568279faaa2e51cafb4cac5acc17f6a170e23fe39c01c21e861f468b27c4f3c8f55b3cedfe719 languageName: node linkType: hard @@ -2392,13 +2386,13 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:0.1.43": - version: 0.1.43 - resolution: "@types/chrome@npm:0.1.43" +"@types/chrome@npm:0.1.42": + version: 0.1.42 + resolution: "@types/chrome@npm:0.1.42" dependencies: "@types/filesystem": "npm:*" "@types/har-format": "npm:*" - checksum: 10c0/ee9bf6c81b8621f87582ad02e4193a18e94775d6e13bf9012c925101fdc014baba1edf81b0fe220b006d69088b1ac6eb64ac37386c6948ccea4f7dcff5ed5aa2 + checksum: 10c0/3c3ff59c24c6c563ab503c115ffb38e8b1f82aa90d8a3051277e6ad2dc7f5697f4f7fb3063b621e7286360866c789abb1e9079aec70e3bee8fdea2029699a1a5 languageName: node linkType: hard @@ -2547,7 +2541,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:25.9.2, @types/node@npm:>=10.0.0": +"@types/node@npm:*, @types/node@npm:>=10.0.0": version: 25.9.2 resolution: "@types/node@npm:25.9.2" dependencies: @@ -2556,6 +2550,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:25.9.1": + version: 25.9.1 + resolution: "@types/node@npm:25.9.1" + dependencies: + undici-types: "npm:>=7.24.0 <7.24.7" + checksum: 10c0/9a04682842bebbcf21a1779dfeab9aa733d7bd7bbc0a0edb641ab3a9a3d43eac543225acf669c334f458f1956443ebc072bc3c72840c543b8b356cab5c82d456 + languageName: node + linkType: hard + "@types/pako@npm:2.0.4": version: 2.0.4 resolution: "@types/pako@npm:2.0.4" @@ -2586,12 +2589,12 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:19.2.17": - version: 19.2.17 - resolution: "@types/react@npm:19.2.17" +"@types/react@npm:19.2.15": + version: 19.2.15 + resolution: "@types/react@npm:19.2.15" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/bc2c4af96b3e480604424de70d5ebda90c5f4b485df471858c0bc2d7d70364b606ec3c4d8579f94f01aa0c6c0591f56bcf14cba5689f5eea4b74250ccdc3a232 + checksum: 10c0/b554eab715bb14e581f0ae60e5cefe91e1a5e06c31022b543a9806cf224aa056f21e4fb46208e46eb934d86ca0b247ebc82377192a0dead303cb28b8764c6e67 languageName: node linkType: hard @@ -2646,121 +2649,121 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.60.1" +"@typescript-eslint/eslint-plugin@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.60.0" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/type-utils": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/type-utils": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.60.1 + "@typescript-eslint/parser": ^8.60.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/de9f9ab9801970c8c96f342b94661e993e8a66f90a36fc4501a7238585712900a2f1f5c7c805adb1214f98b478a072f0aa590e22dd4ed36231dcabde3f6c7b2f + checksum: 10c0/76dc44d21879a8977d916ab652b86a30e5b69493a0da4ce43ec403442da041320666b5987d6af7d4c9888d52c603e0bb51809b802f98a95d5ee37ca0e8ca5ac3 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/parser@npm:8.60.1" +"@typescript-eslint/parser@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/parser@npm:8.60.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/8bc9ecccac411cda8f6bc38fce2427639071a41f44594b047b40a4a50fd40959797acd373b87ab40e4f4b49e9069d42e1480d91e100800d5fb5e6ec6e4afba71 + checksum: 10c0/1012911e3eca8b3f3a3ca11424c32859ac38b4968bdb4c385c485ce545781da3ad964eceae86177a9aca2cfcbefd03ecf49507d221c7a70918fe0fa6cb8764e7 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/project-service@npm:8.60.1" +"@typescript-eslint/project-service@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/project-service@npm:8.60.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.60.1" - "@typescript-eslint/types": "npm:^8.60.1" + "@typescript-eslint/tsconfig-utils": "npm:^8.60.0" + "@typescript-eslint/types": "npm:^8.60.0" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/f5a61b7f2c90d07b9f89b8d0e4bb5b9a62ab1fc08060b1f6e04793a0ff9bcaa4160afe7662d8027faa7a509cec1354f9178e2e598cae7a66c55a038c70fa0274 + checksum: 10c0/8f72c2f10254787084d19fc73aebd7970bd3f163836c006e5d6997d874a36550d4a6c35b4762a36117be6fa6b84e13268db0a6b572c29b3e7c8c89f25bbb8b65 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/scope-manager@npm:8.60.1" +"@typescript-eslint/scope-manager@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/scope-manager@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" - checksum: 10c0/d9ead95aca27614ccfc160e5487480fc7c0de2e2e07716c5e2a56168f21adfa5124f33f579e7ff0c12896c61b59eb8ce50875c810fec2532a777ead0b103bccd + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" + checksum: 10c0/d64c7c45f9e045fa10905b6703195735b19314f872811e1fd903b6197fb33528a49192ef6ca3183e406601b8d29e8d0096fabfc3e8a99320476e5108d4739f52 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" +"@typescript-eslint/tsconfig-utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c + checksum: 10c0/701eae9a5064c5501e9dccd5a8e0baf365ef9a09da4d523873df303ef139644fad43e3d91b03f9a6ebbb141c0e066fc26ad0c40d5113b7c0d6c9ba69450c2520 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:^8.60.1": - version: 8.61.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.61.0" +"@typescript-eslint/tsconfig-utils@npm:^8.60.0": + version: 8.60.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/b498675f14ef90a5730de7c58388eb2522085a56c3fcad42ad9f89320b96221eafb5b4f9650375f29092025153d03533e3f23ea8f45ce3bc95a57593059edef3 + checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/type-utils@npm:8.60.1" +"@typescript-eslint/type-utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/type-utils@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/916d354fd22a2296abe0c618f89574ba6ed363b841bcbcbb662a53deaccd9bc644f253e7134d12f506d75cb574bbbc3e4113f253045b404e8a17962004e42f1d + checksum: 10c0/2b6d8efe6b8e6f63ecfcca218c255c3f846b78b9567579bec3d16ea97563edebd9d25e7ab3cdf82332c9ded45b7dbfdc1e6540c4503f4716ae8cbd93ab78f605 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/types@npm:8.60.1" - checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 +"@typescript-eslint/types@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/types@npm:8.60.0" + checksum: 10c0/d2b6d46081a6521f204fda30e8f03712480b788d80b62b311e0f33764752d3db3bd415dd4e1f8d28495931316da1dfb5ee259e40c5de970367fbaa1efe97223f languageName: node linkType: hard -"@typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4, @typescript-eslint/types@npm:^8.60.1": - version: 8.61.0 - resolution: "@typescript-eslint/types@npm:8.61.0" - checksum: 10c0/c19407d66fb5ad26e2670cd272bee91d150087d917752422257759e17920220af27cd54593205e9726367a440a237bf8d27ed805cae0b282a79172161f007207 +"@typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4, @typescript-eslint/types@npm:^8.60.0": + version: 8.60.1 + resolution: "@typescript-eslint/types@npm:8.60.1" + checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.60.1" +"@typescript-eslint/typescript-estree@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.60.0" dependencies: - "@typescript-eslint/project-service": "npm:8.60.1" - "@typescript-eslint/tsconfig-utils": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/project-service": "npm:8.60.0" + "@typescript-eslint/tsconfig-utils": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -2768,32 +2771,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/76274d3974fd56675df71b010a2b6799a886537625228f89150fcb4563597eb619be4a22937cacacb0bb20b66c11b03e04f913fb6b44790ce63a7d070f27d3aa + checksum: 10c0/9a24a3c47646886cc5c9bd984afdf5974d07033a5743318a4c649f9595d620cc1a409366ecb87beaddb9cd4b32e1fc7fc18c0531bda08eacd78025c3636d6c72 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/utils@npm:8.60.1" +"@typescript-eslint/utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/utils@npm:8.60.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/24777b47e23f930df5e0a0858e2979dbc44597d52e7ad237d2d764a433ac214ac00c0f7d0245ce9a54eb31900d261e305dc8a77d31efbb73bd7523c0ab075299 + checksum: 10c0/c1fe25bc90a62d9f67c1dd3a23bf32c2b1d3fc81bfa34cb41e5cadaeaa825c83c7c69a4abc9bc132f1ee39c7e71e367271a16c47573ed621421a2fa2f0e98dd0 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.60.1" +"@typescript-eslint/visitor-keys@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.0" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/d9831624c0dde1655a83f3e10b85fe3655ec015fd57cac9295bf3ad302ef30736eb58417b1d9a5c8639a8b05b665f9acc6bcc34f9def386846ae8d6833a5e3ce + checksum: 10c0/5ff775fe5352d359e25ed47ce27d8d61dea7aa9aa4d21a3556a9ee02957673e8d4787ad1d0c325977f47cca56ecdce401417864de0c773b6167053fe36bf9e65 languageName: node linkType: hard @@ -3119,9 +3122,9 @@ __metadata: languageName: node linkType: hard -"@vue/test-utils@npm:2.4.11": - version: 2.4.11 - resolution: "@vue/test-utils@npm:2.4.11" +"@vue/test-utils@npm:2.4.10": + version: 2.4.10 + resolution: "@vue/test-utils@npm:2.4.10" dependencies: js-beautify: "npm:^1.14.9" vue-component-type-helpers: "npm:^3.0.0" @@ -3132,7 +3135,7 @@ __metadata: peerDependenciesMeta: "@vue/server-renderer": optional: true - checksum: 10c0/7e964df1b011de5e0c782f61300ce22d43ccdca5c58dfe07303d700cd1a8e423480b3144076f2a83c241326d25ab383a9e3d3fe51509c7adc3fa276dd465c78b + checksum: 10c0/5dee1a15a4908d1ad82d9940307223214d9fa93e2cdffdc294b72880f73db3e1938bd2f290b096a22b8b8d84db481d4aea7989fcb4c9e5e63ea16896c9a4f4fd languageName: node linkType: hard @@ -3962,20 +3965,19 @@ __metadata: version: 0.0.0-use.local resolution: "browser-sdk@workspace:." dependencies: - "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" - "@types/chrome": "npm:0.1.43" + "@types/chrome": "npm:0.1.42" "@types/cors": "npm:2.8.19" "@types/express": "npm:5.0.6" "@types/jasmine": "npm:3.10.19" - "@types/node": "npm:25.9.2" + "@types/node": "npm:25.9.1" "@types/node-forge": "npm:1.3.14" "@types/ws": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.0" ajv: "npm:8.20.0" browserstack-local: "npm:1.5.13" busboy: "npm:1.6.0" @@ -3986,8 +3988,8 @@ __metadata: eslint-import-resolver-typescript: "npm:4.4.5" eslint-plugin-import-x: "npm:4.16.2" eslint-plugin-jasmine: "npm:4.2.2" - eslint-plugin-jsdoc: "npm:63.0.2" - eslint-plugin-unicorn: "npm:65.0.1" + eslint-plugin-jsdoc: "npm:63.0.1" + eslint-plugin-unicorn: "npm:64.0.0" express: "npm:5.2.1" globals: "npm:17.6.0" html-webpack-plugin: "npm:5.6.7" @@ -4014,8 +4016,8 @@ __metadata: tsdown: "npm:0.22.2" typedoc: "npm:0.28.19" typescript: "npm:6.0.3" - typescript-eslint: "npm:8.60.1" - undici: "npm:8.4.0" + typescript-eslint: "npm:8.60.0" + undici: "npm:8.3.0" webpack: "npm:5.107.2" webpack-cli: "npm:7.0.3" webpack-dev-middleware: "npm:8.0.3" @@ -4334,6 +4336,15 @@ __metadata: languageName: node linkType: hard +"clean-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "clean-regexp@npm:1.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 + languageName: node + linkType: hard + "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -4887,13 +4898,6 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^7.0.2": - version: 7.0.2 - resolution: "detect-indent@npm:7.0.2" - checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b - languageName: node - linkType: hard - "detect-libc@npm:^2.0.3, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -5449,6 +5453,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -5554,9 +5565,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:63.0.2": - version: 63.0.2 - resolution: "eslint-plugin-jsdoc@npm:63.0.2" +"eslint-plugin-jsdoc@npm:63.0.1": + version: 63.0.1 + resolution: "eslint-plugin-jsdoc@npm:63.0.1" dependencies: "@es-joy/jsdoccomment": "npm:~0.87.0" "@es-joy/resolve.exports": "npm:1.2.0" @@ -5569,37 +5580,38 @@ __metadata: html-entities: "npm:^2.6.0" object-deep-merge: "npm:^2.0.1" parse-imports-exports: "npm:^0.2.4" - semver: "npm:^7.8.2" + semver: "npm:^7.8.1" spdx-expression-parse: "npm:^4.0.0" to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/66252ae3fcba03d3c1e438d8b653c873064e8e59b78f8984df64c645681db156db3899ecba058a473cdd158d7a56d8b5ededfddab1a5fc37942d92c1d33a41b6 + checksum: 10c0/a55d147ea935d94465e222e3cfdae1d11ce4e8c7f10ab0b412f3959d24e8fe9c50837e0fdd59b70267ca6ad5c52c6c0fc5fef2b91938e59d7d568bc34b481d35 languageName: node linkType: hard -"eslint-plugin-unicorn@npm:65.0.1": - version: 65.0.1 - resolution: "eslint-plugin-unicorn@npm:65.0.1" +"eslint-plugin-unicorn@npm:64.0.0": + version: 64.0.0 + resolution: "eslint-plugin-unicorn@npm:64.0.0" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" "@eslint-community/eslint-utils": "npm:^4.9.1" change-case: "npm:^5.4.4" ci-info: "npm:^4.4.0" + clean-regexp: "npm:^1.0.0" core-js-compat: "npm:^3.49.0" - detect-indent: "npm:^7.0.2" find-up-simple: "npm:^1.0.1" globals: "npm:^17.4.0" indent-string: "npm:^5.0.0" is-builtin-module: "npm:^5.0.0" jsesc: "npm:^3.1.0" pluralize: "npm:^8.0.0" + regexp-tree: "npm:^0.1.27" regjsparser: "npm:^0.13.0" semver: "npm:^7.7.4" strip-indent: "npm:^4.1.1" peerDependencies: eslint: ">=9.38.0" - checksum: 10c0/17b640a7151911676141ec796cc44616961a80ebd9414f3d2f7666b6877f6e76babf239aa95cc088f126895f795ee91ccc8fe3e14b1bac7a8b33f022686e1a97 + checksum: 10c0/802b556ecaf93fe36217d8bcd9f79b53cc4156bbb75c06f06128a0bd32b2ec94a808dbc5e4c36228895cf6eb0df705337a47b409272ffdc99a40cb08487cb029 languageName: node linkType: hard @@ -8378,19 +8390,19 @@ __metadata: languageName: node linkType: hard -"next@npm:16.2.7": - version: 16.2.7 - resolution: "next@npm:16.2.7" +"next@npm:16.2.6": + version: 16.2.6 + resolution: "next@npm:16.2.6" dependencies: - "@next/env": "npm:16.2.7" - "@next/swc-darwin-arm64": "npm:16.2.7" - "@next/swc-darwin-x64": "npm:16.2.7" - "@next/swc-linux-arm64-gnu": "npm:16.2.7" - "@next/swc-linux-arm64-musl": "npm:16.2.7" - "@next/swc-linux-x64-gnu": "npm:16.2.7" - "@next/swc-linux-x64-musl": "npm:16.2.7" - "@next/swc-win32-arm64-msvc": "npm:16.2.7" - "@next/swc-win32-x64-msvc": "npm:16.2.7" + "@next/env": "npm:16.2.6" + "@next/swc-darwin-arm64": "npm:16.2.6" + "@next/swc-darwin-x64": "npm:16.2.6" + "@next/swc-linux-arm64-gnu": "npm:16.2.6" + "@next/swc-linux-arm64-musl": "npm:16.2.6" + "@next/swc-linux-x64-gnu": "npm:16.2.6" + "@next/swc-linux-x64-musl": "npm:16.2.6" + "@next/swc-win32-arm64-msvc": "npm:16.2.6" + "@next/swc-win32-x64-msvc": "npm:16.2.6" "@swc/helpers": "npm:0.5.15" baseline-browser-mapping: "npm:^2.9.19" caniuse-lite: "npm:^1.0.30001579" @@ -8434,7 +8446,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/11ba48609b3e2e6f380021b3c394c51a9e85a2c4569d19f11be24c7ee1dc5c0d4028e9ef824982043c48e2cb8583b949471153838aec85614a348fb38fb0eff9 + checksum: 10c0/3572071eb0e8051c3b007224dcf642037ce27a2f4b75c45f7e0fe7f2343e98e66604ce8696dde56ecd72963900d330d3a3af0f068f34cfc67520180263effa5f languageName: node linkType: hard @@ -9411,14 +9423,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:19.2.7": - version: 19.2.7 - resolution: "react-dom@npm:19.2.7" +"react-dom@npm:19.2.6": + version: 19.2.6 + resolution: "react-dom@npm:19.2.6" dependencies: scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.2.7 - checksum: 10c0/970ff600f6e80d47d39e2f226f12f226173b3cba3382efc97c5f0cd663de9af38c7a4c11c213fb936094faeac83060d660247accaa96b752180d5b951b9cfecb + react: ^19.2.6 + checksum: 10c0/dbf2aef67857c03a612bc9316a4562e5066f43fa04bf28f7f0734963fc1350da2c9f8eb973930655453281079f30cc8222bab383dbec4b5097084e2c081e3334 languageName: node linkType: hard @@ -9480,15 +9492,15 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:7.17.0": - version: 7.17.0 - resolution: "react-router-dom@npm:7.17.0" +"react-router-dom@npm:7.16.0": + version: 7.16.0 + resolution: "react-router-dom@npm:7.16.0" dependencies: - react-router: "npm:7.17.0" + react-router: "npm:7.16.0" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10c0/60fc4022bccf2fb17b0d8ae8e7c4bda866ca9bf2d45edf0bcbefc854e97fa8971a589b6b77b984a19abecb718faffde357c829d9a22a7913790d608cc7433714 + checksum: 10c0/201b816667e17a5da2b4a45859130efcc36776851ab475cd3538dd5c49b03dbac257e453e0d54ee7c245189bb2cf4fc288b6d01da2282983c03acbf880888a3e languageName: node linkType: hard @@ -9503,9 +9515,9 @@ __metadata: languageName: node linkType: hard -"react-router@npm:7.17.0": - version: 7.17.0 - resolution: "react-router@npm:7.17.0" +"react-router@npm:7.16.0": + version: 7.16.0 + resolution: "react-router@npm:7.16.0" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -9515,7 +9527,7 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10c0/dfa9b0182edba6fab14ef5ac297b292068e71e05bf7e07c6b45fe073d77002089e8e164542364232a8bbb0c7d3ec47b57b78db3984c4383e12308f2d31ad404a + checksum: 10c0/a3d7825c945183dd16f9cb7cf7c16bed859f78cf3049b467d6c9b84bdf0f7357027e821b1f3e187cecfb41e82c0f0bb625432e0ef9aa9d94b778a533204f6b7c languageName: node linkType: hard @@ -9535,10 +9547,10 @@ __metadata: languageName: node linkType: hard -"react@npm:19.2.7": - version: 19.2.7 - resolution: "react@npm:19.2.7" - checksum: 10c0/0bd0e2f1bbd4ba97561c6597bf8a5fec05e6476fe61e165c1065598d16668efc6715205599c94d3ddd49d36cb0f21cbf1b9bcc18ee840b805ce222c3e8d558ac +"react@npm:19.2.6": + version: 19.2.6 + resolution: "react@npm:19.2.6" + checksum: 10c0/66afde33b9a9ee87b1e1cae39d8e7e040d1262e719524fd70660c4d4ce79929c532ac19fc3df5a911edaf02768fdf2c49de4ede1ba99bc6aad72796e0e26e798 languageName: node linkType: hard @@ -9589,6 +9601,15 @@ __metadata: languageName: node linkType: hard +"regexp-tree@npm:^0.1.27": + version: 0.1.27 + resolution: "regexp-tree@npm:0.1.27" + bin: + regexp-tree: bin/regexp-tree + checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c + languageName: node + linkType: hard + "registry-auth-token@npm:^5.0.2": version: 5.1.1 resolution: "registry-auth-token@npm:5.1.1" @@ -10047,12 +10068,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4, semver@npm:^7.8.2": - version: 7.8.4 - resolution: "semver@npm:7.8.4" +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4, semver@npm:^7.8.1": + version: 7.8.2 + resolution: "semver@npm:7.8.2" bin: semver: bin/semver.js - checksum: 10c0/81b7c296fd7927b80f67fa516b75fa1017caac8167795320de28e76ccbc6f7f01763c30ecd10d6a0d8fd089708ab0548a5aebb94b0870e99c2a2b4600a46389b + checksum: 10c0/8e8c193fa75b938e5b3ccf6707c6447e4b34f73e493e72b03f3185393489f45e049144052f624217c346d6c6e0a301dda8eeab2f14413e337218ecb1cbd2de16 languageName: node linkType: hard @@ -11162,18 +11183,18 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.60.1": - version: 8.60.1 - resolution: "typescript-eslint@npm:8.60.1" +"typescript-eslint@npm:8.60.0": + version: 8.60.0 + resolution: "typescript-eslint@npm:8.60.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.60.1" - "@typescript-eslint/parser": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/eslint-plugin": "npm:8.60.0" + "@typescript-eslint/parser": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/75a42e14b4a7446dd9ad992422135f696e0af58d7c0f64ff2d9f157f1df7bac6a089fa7a35454d2393eadd329e602c0002c07043bbcf4906f7007e45e783b54e + checksum: 10c0/6968de79ab61b1c56d7233260a3092daf578399117d804c46b34dcedf0317b33cd3025ba34789b8dc4567f30f6d62d0d11691c9dca278173abe91772741ab79d languageName: node linkType: hard @@ -11244,10 +11265,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:8.4.0": - version: 8.4.0 - resolution: "undici@npm:8.4.0" - checksum: 10c0/5ee96ecfd3df955dcd1a368ac3ec68e875bd75e81d5435d6605d2ea24b09f1e54eae675215266ccff8a212d39986630d520e804e29e9f11ba6fd177947477bdd +"undici@npm:8.3.0": + version: 8.3.0 + resolution: "undici@npm:8.3.0" + checksum: 10c0/6a67e46aefc7b882702e76878c4d317040f1ae04aefbab3a3639bcb07b255a050eaf3202ea56b80c42ba5c7140d990cf0096412ca50d6c825a2e1c57c59d1e28 languageName: node linkType: hard From e381820397ffabc20f3f6b22285661a4303bfa35 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 13:06:37 +0200 Subject: [PATCH 04/19] =?UTF-8?q?=F0=9F=91=B7=20derive=20tsdown=20entries?= =?UTF-8?q?=20per=20package=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add getEntries() to pick entry globs based on whether the package uses src/index.ts + src/entries or top-level src modules - set tsdown `root` to ./src so unbundle output mirrors the src layout (e.g. src/entries/main.ts -> cjs/entries/main.js) instead of being flattened to the entries' common ancestor - drop the `deps.neverBundle` external override --- scripts/build/build-package.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index 5a1e31945f..c5efbdebd2 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,5 +1,5 @@ import fs from 'node:fs/promises' -import { readFileSync, globSync } from 'node:fs' +import { existsSync, readFileSync, globSync } from 'node:fs' import { parseArgs } from 'node:util' import ts from 'typescript' import webpack from 'webpack' @@ -85,6 +85,14 @@ function referencedBuildEnvKeys() { return buildEnvKeys.filter((key) => content.includes(`__BUILD_ENV__${key}__`)) } +function getEntries() { + if (existsSync('./src/index.ts') || existsSync('./src/entries')) { + return ['./src/index.ts', './src/entries/*.ts'] + } + + return ['./src/*.ts', './src/*/index.ts'] +} + async function buildModules({ verbose }: { verbose: boolean }) { // Transpile the source with tsdown (Rolldown). We let TypeScript emit the declaration files (see // emitDeclarations) rather than tsdown, because Rolldown's declaration bundler restructures @@ -92,7 +100,11 @@ async function buildModules({ verbose }: { verbose: boolean }) { // modifiers, rewritten re-exports). await tsdownBuild({ clean: true, - entry: ['./src/**/*.ts', '!./src/**/*.spec.ts', '!./src/**/*.specHelper.ts'], + entry: [...getEntries(), '!**/*.spec.*', '!**/*.specHelper.*'], + // In unbundle mode `root` is the preserveModulesRoot: it pins the output layout to mirror `src/` + // so e.g. `src/entries/main.ts` emits to `cjs/entries/main.js`. Without it, the output would be + // rooted at the entries' common ancestor and flatten `entries/main.ts` to `cjs/main.js`. + root: './src', format: { cjs: { outDir: './cjs', @@ -105,8 +117,6 @@ async function buildModules({ verbose }: { verbose: boolean }) { unbundle: true, dts: false, tsconfig: '../../tsconfig.base.json', - // Mark all non-relative imports as external (cross-package deps and node_modules) - deps: { neverBundle: /^[^./]/ }, define: Object.fromEntries( referencedBuildEnvKeys().map((key) => [`__BUILD_ENV__${key}__`, JSON.stringify(getBuildEnvValue(key))]) ), From cb5584100e4ae81c76c5c4afe9e6935246d6a0fb Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 13:07:42 +0200 Subject: [PATCH 05/19] =?UTF-8?q?=F0=9F=91=B7=20drop=20topological=20order?= =?UTF-8?q?ing=20from=20build:bundle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bundles no longer depend on each other's build output, so parallel ordering is unnecessary after the tsdown migration --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a85784a33d..803df68f2d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "type": "module", "scripts": { "build": "yarn workspaces foreach --all --parallel --topological-dev run build", - "build:bundle": "yarn workspaces foreach --all --parallel --topological-dev run build:bundle", + "build:bundle": "yarn workspaces foreach --all --parallel run build:bundle", "build:apps": "node scripts/build/build-test-apps.ts", "build:docs:json": "typedoc --logLevel Verbose --json ./generated-docs.json", "build:docs:html": "typedoc --out ./generated-docs", From 4e17e5a1a33db35f44ae1181b590d9580fded384 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 14:29:28 +0200 Subject: [PATCH 06/19] =?UTF-8?q?=F0=9F=91=B7=20standardize=20tsdown=20ent?= =?UTF-8?q?ries=20on=20src/entries=20convention?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - move js-core time.ts to src/entries/time.ts so its public surface lives under src/entries - drop getEntries() heuristic; always derive tsdown entries from src/index.ts + src/entries/*.ts - update js-core exports, time/package.json, and tsconfig path to the new location --- packages/js-core/package.json | 6 +++--- packages/js-core/src/{ => entries}/time.ts | 0 packages/js-core/time/package.json | 6 +++--- scripts/build/build-package.ts | 15 +++++---------- tsconfig.base.json | 2 +- 5 files changed, 12 insertions(+), 17 deletions(-) rename packages/js-core/src/{ => entries}/time.ts (100%) diff --git a/packages/js-core/package.json b/packages/js-core/package.json index 33362e1456..80bdd8c26f 100644 --- a/packages/js-core/package.json +++ b/packages/js-core/package.json @@ -5,9 +5,9 @@ "sideEffects": false, "exports": { "./time": { - "import": "./esm/time.mjs", - "require": "./cjs/time.js", - "types": "./cjs/time.d.ts" + "import": "./esm/entries/time.mjs", + "require": "./cjs/entries/time.js", + "types": "./cjs/entries/time.d.ts" } }, "files": [ diff --git a/packages/js-core/src/time.ts b/packages/js-core/src/entries/time.ts similarity index 100% rename from packages/js-core/src/time.ts rename to packages/js-core/src/entries/time.ts diff --git a/packages/js-core/time/package.json b/packages/js-core/time/package.json index 92566ca297..39ed03d3ea 100644 --- a/packages/js-core/time/package.json +++ b/packages/js-core/time/package.json @@ -1,6 +1,6 @@ { "private": true, - "main": "../cjs/time.js", - "module": "../esm/time.mjs", - "types": "../cjs/time.d.ts" + "main": "../cjs/entries/time.js", + "module": "../esm/entries/time.mjs", + "types": "../cjs/entries/time.d.ts" } diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index c5efbdebd2..bdca56c8a9 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,5 +1,5 @@ import fs from 'node:fs/promises' -import { existsSync, readFileSync, globSync } from 'node:fs' +import { readFileSync, globSync } from 'node:fs' import { parseArgs } from 'node:util' import ts from 'typescript' import webpack from 'webpack' @@ -85,14 +85,6 @@ function referencedBuildEnvKeys() { return buildEnvKeys.filter((key) => content.includes(`__BUILD_ENV__${key}__`)) } -function getEntries() { - if (existsSync('./src/index.ts') || existsSync('./src/entries')) { - return ['./src/index.ts', './src/entries/*.ts'] - } - - return ['./src/*.ts', './src/*/index.ts'] -} - async function buildModules({ verbose }: { verbose: boolean }) { // Transpile the source with tsdown (Rolldown). We let TypeScript emit the declaration files (see // emitDeclarations) rather than tsdown, because Rolldown's declaration bundler restructures @@ -100,7 +92,10 @@ async function buildModules({ verbose }: { verbose: boolean }) { // modifiers, rewritten re-exports). await tsdownBuild({ clean: true, - entry: [...getEntries(), '!**/*.spec.*', '!**/*.specHelper.*'], + // Every package exposes its public surface through `src/entries/*.ts` and/or a single + // `src/index.ts`. Restricting entries to those (rather than every source file) lets Rolldown + // tree-shake code only reachable from specs. + entry: ['./src/index.ts', './src/entries/*.ts', '!**/*.spec.*', '!**/*.specHelper.*'], // In unbundle mode `root` is the preserveModulesRoot: it pins the output layout to mirror `src/` // so e.g. `src/entries/main.ts` emits to `cjs/entries/main.js`. Without it, the output would be // rooted at the entries' common ancestor and flatten `entries/main.ts` to `cjs/main.js`. diff --git a/tsconfig.base.json b/tsconfig.base.json index 9963f08a46..686d9a1b9f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -46,7 +46,7 @@ "@datadog/browser-debugger": ["./packages/browser-debugger/src/entries/main"], - "@datadog/js-core/time": ["./packages/js-core/src/time"] + "@datadog/js-core/time": ["./packages/js-core/src/entries/time"] } } } From 78bb3e54ee8276bf60cd9b559fc2977f589eec75 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 15:28:17 +0200 Subject: [PATCH 07/19] =?UTF-8?q?=F0=9F=93=9D=20document=20src/entries=20a?= =?UTF-8?q?nd=20.mjs=20ESM=20convention=20for=20js-core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - update js-core AGENTS.md: sub-paths live under src/entries/, ESM output uses .mjs (no esm/package.json needed), and tsconfig paths point at src/entries - add TODO in build-package.ts explaining why declarations use emitDeclarations instead of tsdown dts (needs TS 4.7+ for bundler resolution and inline type) --- packages/js-core/AGENTS.md | 19 ++++++++++--------- scripts/build/build-package.ts | 4 ++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/js-core/AGENTS.md b/packages/js-core/AGENTS.md index 8ca5564ecc..2ae0b6ec0e 100644 --- a/packages/js-core/AGENTS.md +++ b/packages/js-core/AGENTS.md @@ -46,30 +46,31 @@ Do not add: ### Sub-path exports All APIs live under a named sub-path (e.g. `@datadog/js-core/time`). There is no root entry -point. Each sub-path corresponds to a single source file under `src/`. +point. Each sub-path corresponds to a single source file under `src/entries/`. Each sub-path is exposed **two ways** for maximum compatibility: - **`exports` field** (root `package.json`) — used by modern resolvers (webpack 5, Vite, esbuild, Rollup, native Node ESM/CJS, TypeScript `node16`/`nodenext`/`bundler`). Maps the sub-path to the - correct `import` (ESM), `require` (CJS), and `types` targets. The build emits `esm/package.json` - with `{"type":"module"}` so Node.js correctly treats `esm/*.js` as ES modules (pass - `--esm-type-module` to `build-package.ts`). + correct `import` (ESM, `.mjs`), `require` (CJS, `.js`), and `types` targets. ESM output uses the + `.mjs` extension, so Node.js treats it as an ES module natively without needing an + `esm/package.json`. - **Physical `/package.json` fallback** — used by legacy resolvers that ignore `exports` (webpack 4, old Node, older Jest/ts-node). Relative `main`/`module`/`types` pointing at the same built files. When adding a new sub-path: -1. Create `src/.ts` +1. Create `src/entries/.ts` 2. Add `"./"` to the `exports` field in `package.json` with `import`, `require`, and `types` conditions 3. Add a physical `/package.json` with relative `main`/`module`/`types` (see `time/package.json`), and add `""` to the `files` array so it ships in the package -4. Add `"@datadog/js-core/"` to the `paths` map in the root `tsconfig.base.json` +4. Add `"@datadog/js-core/"` to the `paths` map in the root `tsconfig.base.json`, pointing at + `./packages/js-core/src/entries/` ## Current sub-paths -| Sub-path | Source file | Description | -| ----------------------- | ------------- | -------------- | -| `@datadog/js-core/time` | `src/time.ts` | Time utilities | +| Sub-path | Source file | Description | +| ----------------------- | --------------------- | -------------- | +| `@datadog/js-core/time` | `src/entries/time.ts` | Time utilities | diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index bdca56c8a9..e7d941b919 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -90,6 +90,10 @@ async function buildModules({ verbose }: { verbose: boolean }) { // emitDeclarations) rather than tsdown, because Rolldown's declaration bundler restructures // modules in ways that break compatibility with older TypeScript versions (e.g. inline `type` // modifiers, rewritten re-exports). + // TODO: once we drop support for TypeScript < 4.7, let tsdown emit the declarations (`dts: true`) + // and remove emitDeclarations. The bundler output needs inline `type` modifiers (TS 4.5+) and + // `.mjs`/`.js` extensioned import paths that only resolve under `node16`/`bundler` module + // resolution (TS 4.7+), so 4.7 is the floor where it works. await tsdownBuild({ clean: true, // Every package exposes its public surface through `src/entries/*.ts` and/or a single From edc544042d31e0905b4d2e4e8cfd7961d3a2a486 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Mon, 15 Jun 2026 14:49:39 +0200 Subject: [PATCH 08/19] =?UTF-8?q?=F0=9F=91=B7=20update=20yarn.lock=20for?= =?UTF-8?q?=20browser-core=207.3.0=20and=20js-core=200.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yarn.lock | 565 +++++++++++++++++++++++++++--------------------------- 1 file changed, 285 insertions(+), 280 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7840e6defb..2dfa3b8d43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,11 +352,18 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:7.2.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": +"@datadog/browser-core@npm:7.2.0": + version: 7.2.0 + resolution: "@datadog/browser-core@npm:7.2.0" + checksum: 10c0/cc9a59aa9e66a22475aaa90038f217bb1c5ab91a4a41584ce6cb32579896ff4814c0124dc3c18e231baad3c9275b9c3670fce4a73e78bdab1db536e495f4874b + languageName: node + linkType: hard + +"@datadog/browser-core@npm:7.3.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": version: 0.0.0-use.local resolution: "@datadog/browser-core@workspace:packages/browser-core" dependencies: - "@datadog/js-core": "npm:0.0.1" + "@datadog/js-core": "npm:0.0.2" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" languageName: unknown @@ -366,8 +373,8 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-debugger@workspace:packages/browser-debugger" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" acorn: "npm:8.16.0" languageName: unknown linkType: soft @@ -376,10 +383,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-logs@workspace:packages/browser-logs" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" peerDependencies: - "@datadog/browser-rum": 7.2.0 + "@datadog/browser-rum": 7.3.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true @@ -395,9 +402,9 @@ __metadata: "@angular/core": "npm:22.0.0" "@angular/platform-browser": "npm:22.0.0" "@angular/router": "npm:22.0.0" - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" rxjs: "npm:7.8.2" peerDependencies: "@angular/core": ">=15 <=22" @@ -406,12 +413,12 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-core@npm:7.2.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": +"@datadog/browser-rum-core@npm:7.3.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": version: 0.0.0-use.local resolution: "@datadog/browser-rum-core@workspace:packages/browser-rum-core" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" ajv: "npm:8.20.0" languageName: unknown linkType: soft @@ -420,14 +427,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nextjs@workspace:packages/browser-rum-nextjs" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/browser-rum-react": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@types/react": "npm:19.2.15" - next: "npm:16.2.6" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/browser-rum-react": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@types/react": "npm:19.2.17" + next: "npm:16.2.7" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" peerDependencies: next: ">=13.0.0" react: ">=18.0.0" @@ -443,9 +450,9 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nuxt@workspace:packages/browser-rum-nuxt" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -466,20 +473,20 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-react@npm:7.2.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": +"@datadog/browser-rum-react@npm:7.3.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": version: 0.0.0-use.local resolution: "@datadog/browser-rum-react@workspace:packages/browser-rum-react" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@tanstack/react-router": "npm:1.170.10" - "@types/react": "npm:19.2.15" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@tanstack/react-router": "npm:1.170.15" + "@types/react": "npm:19.2.17" "@types/react-dom": "npm:19.2.3" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" - react-router: "npm:7.16.0" - react-router-dom: "npm:7.16.0" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" + react-router: "npm:7.17.0" + react-router-dom: "npm:7.17.0" react-router-dom-6: "npm:react-router-dom@6.30.4" peerDependencies: "@tanstack/react-router": ">=1.64.0 <2" @@ -506,10 +513,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-slim@workspace:packages/browser-rum-slim" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" peerDependencies: - "@datadog/browser-logs": 7.2.0 + "@datadog/browser-logs": 7.3.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -520,10 +527,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-vue@workspace:packages/browser-rum-vue" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@vue/test-utils": "npm:2.4.10" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@vue/test-utils": "npm:2.4.11" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -545,14 +552,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum@workspace:packages/browser-rum" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" "@datadog/browser-worker": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/js-core": "npm:0.0.2" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" peerDependencies: - "@datadog/browser-logs": 7.2.0 + "@datadog/browser-logs": 7.3.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -567,36 +574,52 @@ __metadata: "@datadog/browser-logs": "workspace:*" "@datadog/browser-rum": "workspace:*" "@datadog/browser-rum-core": "workspace:*" - "@mantine/core": "npm:9.2.2" - "@mantine/hooks": "npm:9.2.2" + "@mantine/core": "npm:9.3.0" + "@mantine/hooks": "npm:9.3.0" "@tabler/icons-react": "npm:3.44.0" - "@types/chrome": "npm:0.1.42" - "@types/react": "npm:19.2.15" + "@types/chrome": "npm:0.1.43" + "@types/react": "npm:19.2.17" "@types/react-dom": "npm:19.2.3" "@wxt-dev/module-react": "npm:1.2.2" clsx: "npm:2.1.1" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" typescript: "npm:6.0.3" wxt: "npm:0.20.26" languageName: unknown linkType: soft -"@datadog/browser-worker@npm:7.2.0, @datadog/browser-worker@workspace:packages/browser-worker": +"@datadog/browser-worker@npm:7.2.0": + version: 7.2.0 + resolution: "@datadog/browser-worker@npm:7.2.0" + dependencies: + "@datadog/browser-core": "npm:7.2.0" + checksum: 10c0/8483361f1db80a3de993d1837c1fc3beddb0b4d79f3cd43e4038baca09d173039754c4beffc4dc059ea984031a706df41d1bd7e57660a3bf17b3a1b7852669f8 + languageName: node + linkType: hard + +"@datadog/browser-worker@workspace:packages/browser-worker": version: 0.0.0-use.local resolution: "@datadog/browser-worker@workspace:packages/browser-worker" dependencies: - "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-core": "npm:7.3.0" webpack: "npm:5.107.2" languageName: unknown linkType: soft -"@datadog/js-core@npm:0.0.1, @datadog/js-core@workspace:packages/js-core": +"@datadog/js-core@npm:0.0.2, @datadog/js-core@workspace:packages/js-core": version: 0.0.0-use.local resolution: "@datadog/js-core@workspace:packages/js-core" languageName: unknown linkType: soft +"@datadog/rum-events-format@DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7": + version: 0.0.0 + resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=02c94b31a2676458a156ed627f3edcd87254beb7" + checksum: 10c0/4a14c1afb23b3e4a0f631f8a1f077d6abab913c82f1145e1585002b488038b00ed19ce16c8840c20c7d94e5d113bc43c48bbb69f46038533cd53d3ebbcbc74c5 + languageName: node + linkType: hard + "@devicefarmer/adbkit-logcat@npm:^2.1.2": version: 2.1.3 resolution: "@devicefarmer/adbkit-logcat@npm:2.1.3" @@ -1627,9 +1650,9 @@ __metadata: languageName: node linkType: hard -"@mantine/core@npm:9.2.2": - version: 9.2.2 - resolution: "@mantine/core@npm:9.2.2" +"@mantine/core@npm:9.3.0": + version: 9.3.0 + resolution: "@mantine/core@npm:9.3.0" dependencies: "@floating-ui/react": "npm:^0.27.19" clsx: "npm:^2.1.1" @@ -1637,19 +1660,19 @@ __metadata: react-remove-scroll: "npm:^2.7.2" type-fest: "npm:^5.6.0" peerDependencies: - "@mantine/hooks": 9.2.2 + "@mantine/hooks": 9.3.0 react: ^19.2.0 react-dom: ^19.2.0 - checksum: 10c0/7c1f82a5c340eb149e865a45d36703ea71da7d2c8171e7c5f5b368df8b45f241c86eeee9863cb8595536b2ac1bbd4b04d5bd8fcd5ed28321dd9ae2e0f3450d1e + checksum: 10c0/e381a68412a5c7decc4fb124ea0c5a8631f9bbb4fd26e015f97093c164c06101090d040e0fe980f2999eb21b37666a6d6fc70f92655018aa1f406299380c53e8 languageName: node linkType: hard -"@mantine/hooks@npm:9.2.2": - version: 9.2.2 - resolution: "@mantine/hooks@npm:9.2.2" +"@mantine/hooks@npm:9.3.0": + version: 9.3.0 + resolution: "@mantine/hooks@npm:9.3.0" peerDependencies: react: ^19.2.0 - checksum: 10c0/2b8c21bc255a3dfbe97529b06d83fd6eb054e1d14d70ceefa8d656978c42fde4933e32feff01cd92c73a3d8ca64779b0d87c00e55314259b00a42a34f027707c + checksum: 10c0/ed95a2551b34719d43d7b195cf05248498f20add736a2e4ec582b677e5a9efb53b562010df79dc9af7db087e76e9ac42192443c9d03f76963b5dba7dfc2e0a63 languageName: node linkType: hard @@ -1665,65 +1688,65 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:16.2.6": - version: 16.2.6 - resolution: "@next/env@npm:16.2.6" - checksum: 10c0/466722ce30a9561d29c08a7ba78091a47fef3644f422d04751c7124a24457ffe11eb25bb6c59c1e1d57735d9c68c58d185cc19ea58befd7a9c5b81dc05ca550d +"@next/env@npm:16.2.7": + version: 16.2.7 + resolution: "@next/env@npm:16.2.7" + checksum: 10c0/d5928d76047ee4f04cf2e5e47fce6c348ee010c7d3105d631e70299bb4ac8d0c53cefbb3415ce0e0e918e89fbcde0817ccac1be220b41cdc4490f989c7d166a7 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-darwin-arm64@npm:16.2.6" +"@next/swc-darwin-arm64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-arm64@npm:16.2.7" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-darwin-x64@npm:16.2.6" +"@next/swc-darwin-x64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-x64@npm:16.2.7" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-arm64-gnu@npm:16.2.6" +"@next/swc-linux-arm64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-arm64-musl@npm:16.2.6" +"@next/swc-linux-arm64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-x64-gnu@npm:16.2.6" +"@next/swc-linux-x64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-x64-musl@npm:16.2.6" +"@next/swc-linux-x64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-musl@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-win32-arm64-msvc@npm:16.2.6" +"@next/swc-win32-arm64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.7" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-win32-x64-msvc@npm:16.2.6" +"@next/swc-win32-x64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.7" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2304,18 +2327,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-router@npm:1.170.10": - version: 1.170.10 - resolution: "@tanstack/react-router@npm:1.170.10" +"@tanstack/react-router@npm:1.170.15": + version: 1.170.15 + resolution: "@tanstack/react-router@npm:1.170.15" dependencies: "@tanstack/history": "npm:1.162.0" "@tanstack/react-store": "npm:^0.9.3" - "@tanstack/router-core": "npm:1.171.8" + "@tanstack/router-core": "npm:1.171.13" isbot: "npm:^5.1.22" peerDependencies: react: ">=18.0.0 || >=19.0.0" react-dom: ">=18.0.0 || >=19.0.0" - checksum: 10c0/c57bf65625ab3deb5e557bdb1418591bc55eefa0197524deeb737220cbe4d9473dfd0f0b759f97021d2ecd6fd9340a87201933438ab3eb3ee34106419f5a5fad + checksum: 10c0/779cd0278de657925797cf60091f2183eb8ad842a3dd9e98e814de82a67465fdb109422e1fa130a6658daeac4c5efcd5c48918b971665ca976af5be352aba094 languageName: node linkType: hard @@ -2332,15 +2355,15 @@ __metadata: languageName: node linkType: hard -"@tanstack/router-core@npm:1.171.8": - version: 1.171.8 - resolution: "@tanstack/router-core@npm:1.171.8" +"@tanstack/router-core@npm:1.171.13": + version: 1.171.13 + resolution: "@tanstack/router-core@npm:1.171.13" dependencies: "@tanstack/history": "npm:1.162.0" cookie-es: "npm:^3.0.0" seroval: "npm:^1.5.4" seroval-plugins: "npm:^1.5.4" - checksum: 10c0/ff1f894de2cdb4c013ae48f71fc0f6bdfdbdd34d3c927915ac3568279faaa2e51cafb4cac5acc17f6a170e23fe39c01c21e861f468b27c4f3c8f55b3cedfe719 + checksum: 10c0/10db2af6b64146e5273d0b378f873c518f790d4a20cd597cb783aaf718efc9c600e326b97f068f0892b1c5cb2ac912f68846b6d25f43cc0c97ef240494b55c94 languageName: node linkType: hard @@ -2386,13 +2409,13 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:0.1.42": - version: 0.1.42 - resolution: "@types/chrome@npm:0.1.42" +"@types/chrome@npm:0.1.43": + version: 0.1.43 + resolution: "@types/chrome@npm:0.1.43" dependencies: "@types/filesystem": "npm:*" "@types/har-format": "npm:*" - checksum: 10c0/3c3ff59c24c6c563ab503c115ffb38e8b1f82aa90d8a3051277e6ad2dc7f5697f4f7fb3063b621e7286360866c789abb1e9079aec70e3bee8fdea2029699a1a5 + checksum: 10c0/ee9bf6c81b8621f87582ad02e4193a18e94775d6e13bf9012c925101fdc014baba1edf81b0fe220b006d69088b1ac6eb64ac37386c6948ccea4f7dcff5ed5aa2 languageName: node linkType: hard @@ -2541,7 +2564,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=10.0.0": +"@types/node@npm:*, @types/node@npm:25.9.2, @types/node@npm:>=10.0.0": version: 25.9.2 resolution: "@types/node@npm:25.9.2" dependencies: @@ -2550,15 +2573,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:25.9.1": - version: 25.9.1 - resolution: "@types/node@npm:25.9.1" - dependencies: - undici-types: "npm:>=7.24.0 <7.24.7" - checksum: 10c0/9a04682842bebbcf21a1779dfeab9aa733d7bd7bbc0a0edb641ab3a9a3d43eac543225acf669c334f458f1956443ebc072bc3c72840c543b8b356cab5c82d456 - languageName: node - linkType: hard - "@types/pako@npm:2.0.4": version: 2.0.4 resolution: "@types/pako@npm:2.0.4" @@ -2589,12 +2603,12 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:19.2.15": - version: 19.2.15 - resolution: "@types/react@npm:19.2.15" +"@types/react@npm:19.2.17": + version: 19.2.17 + resolution: "@types/react@npm:19.2.17" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/b554eab715bb14e581f0ae60e5cefe91e1a5e06c31022b543a9806cf224aa056f21e4fb46208e46eb934d86ca0b247ebc82377192a0dead303cb28b8764c6e67 + checksum: 10c0/bc2c4af96b3e480604424de70d5ebda90c5f4b485df471858c0bc2d7d70364b606ec3c4d8579f94f01aa0c6c0591f56bcf14cba5689f5eea4b74250ccdc3a232 languageName: node linkType: hard @@ -2649,121 +2663,121 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.60.0" +"@typescript-eslint/eslint-plugin@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.60.1" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/type-utils": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/type-utils": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.60.0 + "@typescript-eslint/parser": ^8.60.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/76dc44d21879a8977d916ab652b86a30e5b69493a0da4ce43ec403442da041320666b5987d6af7d4c9888d52c603e0bb51809b802f98a95d5ee37ca0e8ca5ac3 + checksum: 10c0/de9f9ab9801970c8c96f342b94661e993e8a66f90a36fc4501a7238585712900a2f1f5c7c805adb1214f98b478a072f0aa590e22dd4ed36231dcabde3f6c7b2f languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/parser@npm:8.60.0" +"@typescript-eslint/parser@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/parser@npm:8.60.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/1012911e3eca8b3f3a3ca11424c32859ac38b4968bdb4c385c485ce545781da3ad964eceae86177a9aca2cfcbefd03ecf49507d221c7a70918fe0fa6cb8764e7 + checksum: 10c0/8bc9ecccac411cda8f6bc38fce2427639071a41f44594b047b40a4a50fd40959797acd373b87ab40e4f4b49e9069d42e1480d91e100800d5fb5e6ec6e4afba71 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/project-service@npm:8.60.0" +"@typescript-eslint/project-service@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/project-service@npm:8.60.1" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.60.0" - "@typescript-eslint/types": "npm:^8.60.0" + "@typescript-eslint/tsconfig-utils": "npm:^8.60.1" + "@typescript-eslint/types": "npm:^8.60.1" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/8f72c2f10254787084d19fc73aebd7970bd3f163836c006e5d6997d874a36550d4a6c35b4762a36117be6fa6b84e13268db0a6b572c29b3e7c8c89f25bbb8b65 + checksum: 10c0/f5a61b7f2c90d07b9f89b8d0e4bb5b9a62ab1fc08060b1f6e04793a0ff9bcaa4160afe7662d8027faa7a509cec1354f9178e2e598cae7a66c55a038c70fa0274 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/scope-manager@npm:8.60.0" +"@typescript-eslint/scope-manager@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/scope-manager@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" - checksum: 10c0/d64c7c45f9e045fa10905b6703195735b19314f872811e1fd903b6197fb33528a49192ef6ca3183e406601b8d29e8d0096fabfc3e8a99320476e5108d4739f52 + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" + checksum: 10c0/d9ead95aca27614ccfc160e5487480fc7c0de2e2e07716c5e2a56168f21adfa5124f33f579e7ff0c12896c61b59eb8ce50875c810fec2532a777ead0b103bccd languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.0" +"@typescript-eslint/tsconfig-utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/701eae9a5064c5501e9dccd5a8e0baf365ef9a09da4d523873df303ef139644fad43e3d91b03f9a6ebbb141c0e066fc26ad0c40d5113b7c0d6c9ba69450c2520 + checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:^8.60.0": - version: 8.60.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" +"@typescript-eslint/tsconfig-utils@npm:^8.60.1": + version: 8.61.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.61.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c + checksum: 10c0/b498675f14ef90a5730de7c58388eb2522085a56c3fcad42ad9f89320b96221eafb5b4f9650375f29092025153d03533e3f23ea8f45ce3bc95a57593059edef3 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/type-utils@npm:8.60.0" +"@typescript-eslint/type-utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/type-utils@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/2b6d8efe6b8e6f63ecfcca218c255c3f846b78b9567579bec3d16ea97563edebd9d25e7ab3cdf82332c9ded45b7dbfdc1e6540c4503f4716ae8cbd93ab78f605 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/types@npm:8.60.0" - checksum: 10c0/d2b6d46081a6521f204fda30e8f03712480b788d80b62b311e0f33764752d3db3bd415dd4e1f8d28495931316da1dfb5ee259e40c5de970367fbaa1efe97223f + checksum: 10c0/916d354fd22a2296abe0c618f89574ba6ed363b841bcbcbb662a53deaccd9bc644f253e7134d12f506d75cb574bbbc3e4113f253045b404e8a17962004e42f1d languageName: node linkType: hard -"@typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4, @typescript-eslint/types@npm:^8.60.0": +"@typescript-eslint/types@npm:8.60.1, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4": version: 8.60.1 resolution: "@typescript-eslint/types@npm:8.60.1" checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.60.0" +"@typescript-eslint/types@npm:^8.60.1": + version: 8.61.0 + resolution: "@typescript-eslint/types@npm:8.61.0" + checksum: 10c0/c19407d66fb5ad26e2670cd272bee91d150087d917752422257759e17920220af27cd54593205e9726367a440a237bf8d27ed805cae0b282a79172161f007207 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.60.1" dependencies: - "@typescript-eslint/project-service": "npm:8.60.0" - "@typescript-eslint/tsconfig-utils": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/project-service": "npm:8.60.1" + "@typescript-eslint/tsconfig-utils": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -2771,32 +2785,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/9a24a3c47646886cc5c9bd984afdf5974d07033a5743318a4c649f9595d620cc1a409366ecb87beaddb9cd4b32e1fc7fc18c0531bda08eacd78025c3636d6c72 + checksum: 10c0/76274d3974fd56675df71b010a2b6799a886537625228f89150fcb4563597eb619be4a22937cacacb0bb20b66c11b03e04f913fb6b44790ce63a7d070f27d3aa languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/utils@npm:8.60.0" +"@typescript-eslint/utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/utils@npm:8.60.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/c1fe25bc90a62d9f67c1dd3a23bf32c2b1d3fc81bfa34cb41e5cadaeaa825c83c7c69a4abc9bc132f1ee39c7e71e367271a16c47573ed621421a2fa2f0e98dd0 + checksum: 10c0/24777b47e23f930df5e0a0858e2979dbc44597d52e7ad237d2d764a433ac214ac00c0f7d0245ce9a54eb31900d261e305dc8a77d31efbb73bd7523c0ab075299 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.60.0" +"@typescript-eslint/visitor-keys@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.1" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/5ff775fe5352d359e25ed47ce27d8d61dea7aa9aa4d21a3556a9ee02957673e8d4787ad1d0c325977f47cca56ecdce401417864de0c773b6167053fe36bf9e65 + checksum: 10c0/d9831624c0dde1655a83f3e10b85fe3655ec015fd57cac9295bf3ad302ef30736eb58417b1d9a5c8639a8b05b665f9acc6bcc34f9def386846ae8d6833a5e3ce languageName: node linkType: hard @@ -3122,9 +3136,9 @@ __metadata: languageName: node linkType: hard -"@vue/test-utils@npm:2.4.10": - version: 2.4.10 - resolution: "@vue/test-utils@npm:2.4.10" +"@vue/test-utils@npm:2.4.11": + version: 2.4.11 + resolution: "@vue/test-utils@npm:2.4.11" dependencies: js-beautify: "npm:^1.14.9" vue-component-type-helpers: "npm:^3.0.0" @@ -3135,7 +3149,7 @@ __metadata: peerDependenciesMeta: "@vue/server-renderer": optional: true - checksum: 10c0/5dee1a15a4908d1ad82d9940307223214d9fa93e2cdffdc294b72880f73db3e1938bd2f290b096a22b8b8d84db481d4aea7989fcb4c9e5e63ea16896c9a4f4fd + checksum: 10c0/7e964df1b011de5e0c782f61300ce22d43ccdca5c58dfe07303d700cd1a8e423480b3144076f2a83c241326d25ab383a9e3d3fe51509c7adc3fa276dd465c78b languageName: node linkType: hard @@ -3965,19 +3979,20 @@ __metadata: version: 0.0.0-use.local resolution: "browser-sdk@workspace:." dependencies: + "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" - "@types/chrome": "npm:0.1.42" + "@types/chrome": "npm:0.1.43" "@types/cors": "npm:2.8.19" "@types/express": "npm:5.0.6" "@types/jasmine": "npm:3.10.19" - "@types/node": "npm:25.9.1" + "@types/node": "npm:25.9.2" "@types/node-forge": "npm:1.3.14" "@types/ws": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.1" ajv: "npm:8.20.0" browserstack-local: "npm:1.5.13" busboy: "npm:1.6.0" @@ -3988,8 +4003,8 @@ __metadata: eslint-import-resolver-typescript: "npm:4.4.5" eslint-plugin-import-x: "npm:4.16.2" eslint-plugin-jasmine: "npm:4.2.2" - eslint-plugin-jsdoc: "npm:63.0.1" - eslint-plugin-unicorn: "npm:64.0.0" + eslint-plugin-jsdoc: "npm:63.0.2" + eslint-plugin-unicorn: "npm:65.0.1" express: "npm:5.2.1" globals: "npm:17.6.0" html-webpack-plugin: "npm:5.6.7" @@ -4016,8 +4031,8 @@ __metadata: tsdown: "npm:0.22.2" typedoc: "npm:0.28.19" typescript: "npm:6.0.3" - typescript-eslint: "npm:8.60.0" - undici: "npm:8.3.0" + typescript-eslint: "npm:8.60.1" + undici: "npm:8.4.0" webpack: "npm:5.107.2" webpack-cli: "npm:7.0.3" webpack-dev-middleware: "npm:8.0.3" @@ -4336,15 +4351,6 @@ __metadata: languageName: node linkType: hard -"clean-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-regexp@npm:1.0.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 - languageName: node - linkType: hard - "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -4898,6 +4904,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^7.0.2": + version: 7.0.2 + resolution: "detect-indent@npm:7.0.2" + checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b + languageName: node + linkType: hard + "detect-libc@npm:^2.0.3, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -5453,13 +5466,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -5565,9 +5571,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:63.0.1": - version: 63.0.1 - resolution: "eslint-plugin-jsdoc@npm:63.0.1" +"eslint-plugin-jsdoc@npm:63.0.2": + version: 63.0.2 + resolution: "eslint-plugin-jsdoc@npm:63.0.2" dependencies: "@es-joy/jsdoccomment": "npm:~0.87.0" "@es-joy/resolve.exports": "npm:1.2.0" @@ -5580,38 +5586,37 @@ __metadata: html-entities: "npm:^2.6.0" object-deep-merge: "npm:^2.0.1" parse-imports-exports: "npm:^0.2.4" - semver: "npm:^7.8.1" + semver: "npm:^7.8.2" spdx-expression-parse: "npm:^4.0.0" to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/a55d147ea935d94465e222e3cfdae1d11ce4e8c7f10ab0b412f3959d24e8fe9c50837e0fdd59b70267ca6ad5c52c6c0fc5fef2b91938e59d7d568bc34b481d35 + checksum: 10c0/66252ae3fcba03d3c1e438d8b653c873064e8e59b78f8984df64c645681db156db3899ecba058a473cdd158d7a56d8b5ededfddab1a5fc37942d92c1d33a41b6 languageName: node linkType: hard -"eslint-plugin-unicorn@npm:64.0.0": - version: 64.0.0 - resolution: "eslint-plugin-unicorn@npm:64.0.0" +"eslint-plugin-unicorn@npm:65.0.1": + version: 65.0.1 + resolution: "eslint-plugin-unicorn@npm:65.0.1" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" "@eslint-community/eslint-utils": "npm:^4.9.1" change-case: "npm:^5.4.4" ci-info: "npm:^4.4.0" - clean-regexp: "npm:^1.0.0" core-js-compat: "npm:^3.49.0" + detect-indent: "npm:^7.0.2" find-up-simple: "npm:^1.0.1" globals: "npm:^17.4.0" indent-string: "npm:^5.0.0" is-builtin-module: "npm:^5.0.0" jsesc: "npm:^3.1.0" pluralize: "npm:^8.0.0" - regexp-tree: "npm:^0.1.27" regjsparser: "npm:^0.13.0" semver: "npm:^7.7.4" strip-indent: "npm:^4.1.1" peerDependencies: eslint: ">=9.38.0" - checksum: 10c0/802b556ecaf93fe36217d8bcd9f79b53cc4156bbb75c06f06128a0bd32b2ec94a808dbc5e4c36228895cf6eb0df705337a47b409272ffdc99a40cb08487cb029 + checksum: 10c0/17b640a7151911676141ec796cc44616961a80ebd9414f3d2f7666b6877f6e76babf239aa95cc088f126895f795ee91ccc8fe3e14b1bac7a8b33f022686e1a97 languageName: node linkType: hard @@ -8390,19 +8395,19 @@ __metadata: languageName: node linkType: hard -"next@npm:16.2.6": - version: 16.2.6 - resolution: "next@npm:16.2.6" +"next@npm:16.2.7": + version: 16.2.7 + resolution: "next@npm:16.2.7" dependencies: - "@next/env": "npm:16.2.6" - "@next/swc-darwin-arm64": "npm:16.2.6" - "@next/swc-darwin-x64": "npm:16.2.6" - "@next/swc-linux-arm64-gnu": "npm:16.2.6" - "@next/swc-linux-arm64-musl": "npm:16.2.6" - "@next/swc-linux-x64-gnu": "npm:16.2.6" - "@next/swc-linux-x64-musl": "npm:16.2.6" - "@next/swc-win32-arm64-msvc": "npm:16.2.6" - "@next/swc-win32-x64-msvc": "npm:16.2.6" + "@next/env": "npm:16.2.7" + "@next/swc-darwin-arm64": "npm:16.2.7" + "@next/swc-darwin-x64": "npm:16.2.7" + "@next/swc-linux-arm64-gnu": "npm:16.2.7" + "@next/swc-linux-arm64-musl": "npm:16.2.7" + "@next/swc-linux-x64-gnu": "npm:16.2.7" + "@next/swc-linux-x64-musl": "npm:16.2.7" + "@next/swc-win32-arm64-msvc": "npm:16.2.7" + "@next/swc-win32-x64-msvc": "npm:16.2.7" "@swc/helpers": "npm:0.5.15" baseline-browser-mapping: "npm:^2.9.19" caniuse-lite: "npm:^1.0.30001579" @@ -8446,7 +8451,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/3572071eb0e8051c3b007224dcf642037ce27a2f4b75c45f7e0fe7f2343e98e66604ce8696dde56ecd72963900d330d3a3af0f068f34cfc67520180263effa5f + checksum: 10c0/11ba48609b3e2e6f380021b3c394c51a9e85a2c4569d19f11be24c7ee1dc5c0d4028e9ef824982043c48e2cb8583b949471153838aec85614a348fb38fb0eff9 languageName: node linkType: hard @@ -9423,14 +9428,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:19.2.6": - version: 19.2.6 - resolution: "react-dom@npm:19.2.6" +"react-dom@npm:19.2.7": + version: 19.2.7 + resolution: "react-dom@npm:19.2.7" dependencies: scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.2.6 - checksum: 10c0/dbf2aef67857c03a612bc9316a4562e5066f43fa04bf28f7f0734963fc1350da2c9f8eb973930655453281079f30cc8222bab383dbec4b5097084e2c081e3334 + react: ^19.2.7 + checksum: 10c0/970ff600f6e80d47d39e2f226f12f226173b3cba3382efc97c5f0cd663de9af38c7a4c11c213fb936094faeac83060d660247accaa96b752180d5b951b9cfecb languageName: node linkType: hard @@ -9492,15 +9497,15 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:7.16.0": - version: 7.16.0 - resolution: "react-router-dom@npm:7.16.0" +"react-router-dom@npm:7.17.0": + version: 7.17.0 + resolution: "react-router-dom@npm:7.17.0" dependencies: - react-router: "npm:7.16.0" + react-router: "npm:7.17.0" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10c0/201b816667e17a5da2b4a45859130efcc36776851ab475cd3538dd5c49b03dbac257e453e0d54ee7c245189bb2cf4fc288b6d01da2282983c03acbf880888a3e + checksum: 10c0/60fc4022bccf2fb17b0d8ae8e7c4bda866ca9bf2d45edf0bcbefc854e97fa8971a589b6b77b984a19abecb718faffde357c829d9a22a7913790d608cc7433714 languageName: node linkType: hard @@ -9515,9 +9520,9 @@ __metadata: languageName: node linkType: hard -"react-router@npm:7.16.0": - version: 7.16.0 - resolution: "react-router@npm:7.16.0" +"react-router@npm:7.17.0": + version: 7.17.0 + resolution: "react-router@npm:7.17.0" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -9527,7 +9532,7 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10c0/a3d7825c945183dd16f9cb7cf7c16bed859f78cf3049b467d6c9b84bdf0f7357027e821b1f3e187cecfb41e82c0f0bb625432e0ef9aa9d94b778a533204f6b7c + checksum: 10c0/dfa9b0182edba6fab14ef5ac297b292068e71e05bf7e07c6b45fe073d77002089e8e164542364232a8bbb0c7d3ec47b57b78db3984c4383e12308f2d31ad404a languageName: node linkType: hard @@ -9547,10 +9552,10 @@ __metadata: languageName: node linkType: hard -"react@npm:19.2.6": - version: 19.2.6 - resolution: "react@npm:19.2.6" - checksum: 10c0/66afde33b9a9ee87b1e1cae39d8e7e040d1262e719524fd70660c4d4ce79929c532ac19fc3df5a911edaf02768fdf2c49de4ede1ba99bc6aad72796e0e26e798 +"react@npm:19.2.7": + version: 19.2.7 + resolution: "react@npm:19.2.7" + checksum: 10c0/0bd0e2f1bbd4ba97561c6597bf8a5fec05e6476fe61e165c1065598d16668efc6715205599c94d3ddd49d36cb0f21cbf1b9bcc18ee840b805ce222c3e8d558ac languageName: node linkType: hard @@ -9601,15 +9606,6 @@ __metadata: languageName: node linkType: hard -"regexp-tree@npm:^0.1.27": - version: 0.1.27 - resolution: "regexp-tree@npm:0.1.27" - bin: - regexp-tree: bin/regexp-tree - checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c - languageName: node - linkType: hard - "registry-auth-token@npm:^5.0.2": version: 5.1.1 resolution: "registry-auth-token@npm:5.1.1" @@ -10077,6 +10073,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.8.2": + version: 7.8.4 + resolution: "semver@npm:7.8.4" + bin: + semver: bin/semver.js + checksum: 10c0/81b7c296fd7927b80f67fa516b75fa1017caac8167795320de28e76ccbc6f7f01763c30ecd10d6a0d8fd089708ab0548a5aebb94b0870e99c2a2b4600a46389b + languageName: node + linkType: hard + "send@npm:^1.1.0, send@npm:^1.2.0": version: 1.2.1 resolution: "send@npm:1.2.1" @@ -11183,18 +11188,18 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.60.0": - version: 8.60.0 - resolution: "typescript-eslint@npm:8.60.0" +"typescript-eslint@npm:8.60.1": + version: 8.60.1 + resolution: "typescript-eslint@npm:8.60.1" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.60.0" - "@typescript-eslint/parser": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/eslint-plugin": "npm:8.60.1" + "@typescript-eslint/parser": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/6968de79ab61b1c56d7233260a3092daf578399117d804c46b34dcedf0317b33cd3025ba34789b8dc4567f30f6d62d0d11691c9dca278173abe91772741ab79d + checksum: 10c0/75a42e14b4a7446dd9ad992422135f696e0af58d7c0f64ff2d9f157f1df7bac6a089fa7a35454d2393eadd329e602c0002c07043bbcf4906f7007e45e783b54e languageName: node linkType: hard @@ -11265,10 +11270,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:8.3.0": - version: 8.3.0 - resolution: "undici@npm:8.3.0" - checksum: 10c0/6a67e46aefc7b882702e76878c4d317040f1ae04aefbab3a3639bcb07b255a050eaf3202ea56b80c42ba5c7140d990cf0096412ca50d6c825a2e1c57c59d1e28 +"undici@npm:8.4.0": + version: 8.4.0 + resolution: "undici@npm:8.4.0" + checksum: 10c0/5ee96ecfd3df955dcd1a368ac3ec68e875bd75e81d5435d6605d2ea24b09f1e54eae675215266ccff8a212d39986630d520e804e29e9f11ba6fd177947477bdd languageName: node linkType: hard From f510dab3a567eebf430de821fa20229de7eeeae6 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Mon, 15 Jun 2026 14:55:14 +0200 Subject: [PATCH 09/19] =?UTF-8?q?=F0=9F=91=B7=20bump=20browser-worker=20de?= =?UTF-8?q?vDependency=20to=207.3.0=20in=20browser-rum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/browser-rum/package.json | 2 +- yarn.lock | 20 ++------------------ 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/packages/browser-rum/package.json b/packages/browser-rum/package.json index 728c0331bb..ba860e4e29 100644 --- a/packages/browser-rum/package.json +++ b/packages/browser-rum/package.json @@ -39,7 +39,7 @@ "directory": "packages/browser-rum" }, "devDependencies": { - "@datadog/browser-worker": "7.2.0", + "@datadog/browser-worker": "7.3.0", "@types/pako": "2.0.4", "pako": "2.1.0" }, diff --git a/yarn.lock b/yarn.lock index 2dfa3b8d43..31b838a74b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,13 +352,6 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:7.2.0": - version: 7.2.0 - resolution: "@datadog/browser-core@npm:7.2.0" - checksum: 10c0/cc9a59aa9e66a22475aaa90038f217bb1c5ab91a4a41584ce6cb32579896ff4814c0124dc3c18e231baad3c9275b9c3670fce4a73e78bdab1db536e495f4874b - languageName: node - linkType: hard - "@datadog/browser-core@npm:7.3.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": version: 0.0.0-use.local resolution: "@datadog/browser-core@workspace:packages/browser-core" @@ -554,7 +547,7 @@ __metadata: dependencies: "@datadog/browser-core": "npm:7.3.0" "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/browser-worker": "npm:7.2.0" + "@datadog/browser-worker": "npm:7.3.0" "@datadog/js-core": "npm:0.0.2" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" @@ -589,16 +582,7 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-worker@npm:7.2.0": - version: 7.2.0 - resolution: "@datadog/browser-worker@npm:7.2.0" - dependencies: - "@datadog/browser-core": "npm:7.2.0" - checksum: 10c0/8483361f1db80a3de993d1837c1fc3beddb0b4d79f3cd43e4038baca09d173039754c4beffc4dc059ea984031a706df41d1bd7e57660a3bf17b3a1b7852669f8 - languageName: node - linkType: hard - -"@datadog/browser-worker@workspace:packages/browser-worker": +"@datadog/browser-worker@npm:7.3.0, @datadog/browser-worker@workspace:packages/browser-worker": version: 0.0.0-use.local resolution: "@datadog/browser-worker@workspace:packages/browser-worker" dependencies: From 08f901271e512b2fd2d8dc30bd8bfa5debc34a43 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 9 Jun 2026 08:19:28 +0200 Subject: [PATCH 10/19] =?UTF-8?q?=F0=9F=93=9D=20Add=20AGENTS.md=20for=20br?= =?UTF-8?q?owser-core=20package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documents that browser-core has no semver stability guarantee and breaking changes are allowed, so review warnings about removed exports or signature changes in this package should be disregarded. --- packages/browser-core/AGENTS.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/browser-core/AGENTS.md diff --git a/packages/browser-core/AGENTS.md b/packages/browser-core/AGENTS.md new file mode 100644 index 0000000000..8edd7ff438 --- /dev/null +++ b/packages/browser-core/AGENTS.md @@ -0,0 +1,21 @@ +# `@datadog/browser-core` package + +`@datadog/browser-core` is primarily consumed by other `@datadog/browser-*` packages within this +monorepo. It is published to npm but **not supported for external use** and carries **no semver +stability guarantee**. + +## Breaking changes are allowed + +External consumers exist but are unsupported — we do not guarantee compatibility for them. You may +freely: + +- Remove or rename exported symbols +- Change function signatures (parameters, return types, arity) +- Reorganize modules and re-exports + +When migrating code from `@datadog/browser-core` to `@datadog/js-core`, do **not** keep a +backward-compatible re-export in `browser-core` just to avoid a "breaking change" — there is no +breaking change here. Move the code and update all internal call sites directly. + +Review comments that warn about "breaking changes" in this package (e.g. removed exports, +signature changes) are **not applicable** and should be disregarded. From 960803aa454f51c1ad9eb076b90ea1ec218de259 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 9 Jun 2026 13:20:41 +0200 Subject: [PATCH 11/19] =?UTF-8?q?=E2=9C=A8=20Add=20monitor=20and=20util=20?= =?UTF-8?q?sub-paths=20to=20@datadog/js-core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - monitor: createMonitor(display, onMonitorErrorCollected) factory exposing a documented Monitor interface (monitor, callMonitored, monitored, monitorError) - util: createDisplay + setDebugMode, with a debug-gated ifDebugEnabled facet on Display; util is a folder with a barrel index - wire up exports, legacy fallbacks, and tsconfig paths for both sub-paths --- packages/js-core/AGENTS.md | 25 +++- packages/js-core/README.md | 64 ++++++++- packages/js-core/monitor/package.json | 6 + packages/js-core/package.json | 12 ++ packages/js-core/src/entries/monitor.ts | 170 ++++++++++++++++++++++++ packages/js-core/src/entries/util.ts | 2 + packages/js-core/src/util/display.ts | 107 +++++++++++++++ packages/js-core/util/package.json | 6 + tsconfig.base.json | 4 +- 9 files changed, 387 insertions(+), 9 deletions(-) create mode 100644 packages/js-core/monitor/package.json create mode 100644 packages/js-core/src/entries/monitor.ts create mode 100644 packages/js-core/src/entries/util.ts create mode 100644 packages/js-core/src/util/display.ts create mode 100644 packages/js-core/util/package.json diff --git a/packages/js-core/AGENTS.md b/packages/js-core/AGENTS.md index 2ae0b6ec0e..f4fe655c09 100644 --- a/packages/js-core/AGENTS.md +++ b/packages/js-core/AGENTS.md @@ -46,7 +46,10 @@ Do not add: ### Sub-path exports All APIs live under a named sub-path (e.g. `@datadog/js-core/time`). There is no root entry -point. Each sub-path corresponds to a single source file under `src/entries/`. +point. Each sub-path corresponds to a single entry file under `src/entries/` — either the +implementation itself, or a thin barrel that re-exports from sibling implementation files under +`src//` (e.g. `src/entries/util.ts` re-exports from `src/util/display.ts` and +`src/util/debug.ts`). Each sub-path is exposed **two ways** for maximum compatibility: @@ -61,16 +64,28 @@ Each sub-path is exposed **two ways** for maximum compatibility: When adding a new sub-path: -1. Create `src/entries/.ts` +1. Create `src/entries/.ts` (the implementation itself, or a barrel re-exporting from sibling + files under `src//`) 2. Add `"./"` to the `exports` field in `package.json` with `import`, `require`, and `types` conditions 3. Add a physical `/package.json` with relative `main`/`module`/`types` (see `time/package.json`), and add `""` to the `files` array so it ships in the package 4. Add `"@datadog/js-core/"` to the `paths` map in the root `tsconfig.base.json`, pointing at `./packages/js-core/src/entries/` +5. Add a section for the new sub-path in `README.md` (see below) + +### README maintenance + +Every sub-path must have a corresponding section in `README.md`. When adding or changing exports: + +- Add or update the sub-path section in `README.md` with an import example and API table(s) +- **Sort all entries within each API table alphabetically** (by export name) +- Follow the existing section structure: import example → Types table (if any) → Constants table (if any) → Functions table ## Current sub-paths -| Sub-path | Source file | Description | -| ----------------------- | --------------------- | -------------- | -| `@datadog/js-core/time` | `src/entries/time.ts` | Time utilities | +| Sub-path | Entry file | Description | +| -------------------------- | ----------------------------------------------- | ----------------- | +| `@datadog/js-core/monitor` | `src/entries/monitor.ts` | Monitor utilities | +| `@datadog/js-core/time` | `src/entries/time.ts` | Time utilities | +| `@datadog/js-core/util` | `src/entries/util.ts` (barrel over `src/util/`) | General utilities | diff --git a/packages/js-core/README.md b/packages/js-core/README.md index b05df402ec..8f48310728 100644 --- a/packages/js-core/README.md +++ b/packages/js-core/README.md @@ -76,17 +76,75 @@ import type { Duration, ServerDuration, TimeStamp, RelativeTime, ClocksState } f | Export | Description | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `addDuration(a, b)` | Adds two time values, preserving the branded type (`TimeStamp`, `RelativeTime`, or `Duration`). | +| `clockDrift()` | Clock drift in ms between `Date.now()` and `performance.now()` relative to navigation start. | | `clocksNow()` | Current time as a `ClocksState` (both relative and absolute). | | `clocksOrigin()` | Origin clocks state: `relative = 0`, `timeStamp = getTimeOrigin()`. | -| `clockDrift()` | Clock drift in ms between `Date.now()` and `performance.now()` relative to navigation start. | | `dateNow()` | Current Unix timestamp in ms. Prefer over `Date.now()` to guard against broken polyfills. | | `elapsed(start, end)` | Duration between two timestamps or relative times. | | `getTimeOrigin()` | Time origin as a `TimeStamp` (cached). Falls back to `performance.timeOrigin` when `performance.timing` is unavailable (Service Workers, Node.js). | -| `toRelativeTime(ts)` | Returns the `RelativeTime` for a given absolute `TimeStamp`. | -| `toTimeStamp(relative)` | Returns the absolute `TimeStamp` for a given `RelativeTime`. | | `isRelativeTime(time)` | Heuristic type guard: returns `true` if the value is likely a `RelativeTime` (< one year). | | `relativeNow()` | Current relative time in ms since navigation/process start (`performance.now()`). | | `relativeToClocks(relative)` | Converts a `RelativeTime` to a `ClocksState` with a drift-corrected `TimeStamp`. | | `timeStampNow()` | Current Unix timestamp as a `TimeStamp`. | | `timeStampToClocks(ts)` | Converts a `TimeStamp` to a `ClocksState` with its corresponding `RelativeTime`. | +| `toRelativeTime(ts)` | Returns the `RelativeTime` for a given absolute `TimeStamp`. | | `toServerDuration(d)` | Converts a `Duration` (ms) to a `ServerDuration` (ns). Returns `undefined` if the input is `undefined`. | +| `toTimeStamp(relative)` | Returns the absolute `TimeStamp` for a given `RelativeTime`. | + +### `@datadog/js-core/monitor` + +Error-monitoring utilities that wrap callbacks to catch, report, and suppress SDK-internal exceptions. + +Each consumer creates its own isolated monitor via `createMonitor(display, onMonitorErrorCollected)`, +so error-collection state is not shared between SDKs. The `display` (from `createDisplay` in +`@datadog/js-core/util`) controls the log prefix. Both arguments are required and fixed for the +lifetime of the monitor. Caught errors are logged via the display's `ifDebugEnabled` facet, so they +only reach the console when debug mode is on (toggled globally via `setDebugMode` from +`@datadog/js-core/util`). + +```ts +import { createMonitor } from '@datadog/js-core/monitor' +import { createDisplay, setDebugMode } from '@datadog/js-core/util' + +const display = createDisplay('Datadog Browser SDK:') +const { monitor, callMonitored, monitored, monitorError } = createMonitor(display, (error) => reportToTelemetry(error)) + +setDebugMode(true) // global: also log caught errors to the console +``` + +#### Functions + +| Export | Description | +| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `createMonitor(display, onError)` | Creates an isolated monitor using the given `Display` for debug output and required error callback. Returns instance methods. | + +#### Monitor instance (returned by `createMonitor`) + +| Method | Description | +| ------------------------------------ | ----------------------------------------------------------------------------------------------- | +| `callMonitored(fn, context?, args?)` | Calls `fn` with error handling. Returns the function's result, or `undefined` if it throws. | +| `monitor(fn)` | Wraps a function so that any thrown exception is caught and reported instead of propagating. | +| `monitored` | Legacy class-method decorator equivalent to wrapping the method with `monitor`. | +| `monitorError(e)` | Reports an error directly: logs it if debug mode is on, then forwards it to the error callback. | + +### `@datadog/js-core/util` + +General-purpose utilities. + +```ts +import { createDisplay, setDebugMode } from '@datadog/js-core/util' +import type { Display } from '@datadog/js-core/util' +``` + +#### Types + +| Export | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Display` | Console methods pre-bound to the original (unpatched) console. Top-level methods always emit; `Display.ifDebugEnabled.*` emit only in debug mode. | + +#### Functions + +| Export | Description | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `createDisplay(prefix)` | Returns a `Display` bound to the original console methods, prefixing every message with `prefix`. Guards against patched console. | +| `setDebugMode(enabled)` | Global toggle. When `true`, every display's `ifDebugEnabled.*` methods emit to the console; otherwise they stay silent. | diff --git a/packages/js-core/monitor/package.json b/packages/js-core/monitor/package.json new file mode 100644 index 0000000000..8a74740e3d --- /dev/null +++ b/packages/js-core/monitor/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "main": "../cjs/entries/monitor.js", + "module": "../esm/entries/monitor.js", + "types": "../cjs/entries/monitor.d.ts" +} diff --git a/packages/js-core/package.json b/packages/js-core/package.json index 80bdd8c26f..21ec612c68 100644 --- a/packages/js-core/package.json +++ b/packages/js-core/package.json @@ -8,6 +8,16 @@ "import": "./esm/entries/time.mjs", "require": "./cjs/entries/time.js", "types": "./cjs/entries/time.d.ts" + }, + "./monitor": { + "import": "./esm/entries/monitor.js", + "require": "./cjs/entries/monitor.js", + "types": "./cjs/entries/monitor.d.ts" + }, + "./util": { + "import": "./esm/entries/util.js", + "require": "./cjs/entries/util.js", + "types": "./cjs/entries/util.d.ts" } }, "files": [ @@ -15,6 +25,8 @@ "esm", "src", "time", + "monitor", + "util", "!src/**/*.spec.ts", "!src/**/*.specHelper.ts" ], diff --git a/packages/js-core/src/entries/monitor.ts b/packages/js-core/src/entries/monitor.ts new file mode 100644 index 0000000000..d152366ba8 --- /dev/null +++ b/packages/js-core/src/entries/monitor.ts @@ -0,0 +1,170 @@ +import type { Display } from './util' + +/** An isolated monitor, as returned by {@link createMonitor}. */ +export interface Monitor { + /** + * TypeScript method decorator that routes a class method through {@link Monitor.monitor}, so any + * error it throws is caught and reported instead of propagating to the caller. + * + * When to use: prefer this for **class methods** that are entry points from outside the SDK + * (public API methods, lifecycle callbacks) where an internal error must never reach the host + * application. For standalone functions or inline blocks, use {@link Monitor.monitor} or + * {@link Monitor.callMonitored} instead. + * + * @param descriptor - Property descriptor of the decorated method; its `value` is replaced with + * the monitored wrapper. + * + * @example + * ```ts + * class Logger { + * @monitored + * logImplementation(message: string) { + * // if this throws, the error is collected and reported, not propagated to the caller + * } + * } + * ``` + */ + monitored: unknown>( + _: any, + __: string, + descriptor: TypedPropertyDescriptor + ) => void + + /** + * Wraps a function so that, when called, any thrown error is caught and reported (via the error + * callback) instead of propagating. The wrapper keeps the same signature as the input function. + * + * When to use: prefer this when you need a **reusable monitored callback** to hand to something + * that invokes it later, possibly multiple times — an event listener, `setTimeout`, an observable + * subscription. For a one-shot inline block, use {@link Monitor.callMonitored} instead. + * + * @param fn - The function to wrap. + * @returns A function with the same signature that never throws (errors are collected instead). + * + * @example + * ```ts + * element.addEventListener( + * 'click', + * monitor((event) => { + * // handler errors are collected instead of surfacing to the page + * }) + * ) + * ``` + */ + monitor: unknown>(fn: T) => T + + /** + * Invokes a function with error handling: returns its result, or reports the error (via the error + * callback) and returns `undefined` if it throws. + * + * When to use: prefer this for a **one-off inline block** you want to run immediately under error + * protection. If you instead need a callback to pass elsewhere and reuse, wrap it once with + * {@link Monitor.monitor}. + * + * @param fn - The function to invoke. + * @param context - `this` value to invoke `fn` with (optional for context-free functions). + * @param args - Arguments to invoke `fn` with (optional for context-free functions). + * @returns The result of `fn`, or `undefined` if it threw. + * + * @example + * ```ts + * callMonitored(() => { + * const stackTrace = computeStackTrace(error) + * reportStackTrace(stackTrace) + * }) + * ``` + */ + callMonitored: { + unknown>( + fn: T, + context: ThisParameterType, + args: Parameters + ): ReturnType | undefined + unknown>(fn: T): ReturnType | undefined + } + + /** + * Reports an error directly: logs it to the console when debug mode is enabled, then forwards it + * to the error callback. Used internally by {@link Monitor.monitor}/{@link Monitor.callMonitored}, + * but can also be called to report an error caught elsewhere. + * + * When to use: prefer this when you **already hold an error value** and only need to route it to + * telemetry — e.g. a promise rejection, which `monitor`/`callMonitored` do not catch (they only + * handle synchronous throws). + * + * @param e - The error to report. + * + * @example + * ```ts + * // route a promise rejection to telemetry + * doAsyncThing().catch(monitorError) + * ``` + */ + monitorError: (e: unknown) => void +} + +/** + * Creates an isolated monitor with its own error-collection callback and display. + * + * Each consumer (SDK) should create its own monitor so that error-collection callbacks do not + * clobber each other when several SDKs share the same `@datadog/js-core/monitor` module instance. + * + * @param display - {@link Display} used for debug logging (see `createDisplay` in + * `@datadog/js-core/util`). Lets the consumer control the log prefix and console binding. Debug + * output is gated by the display's `ifDebugEnabled` facet (toggled via `setDebugMode`). + * @param onMonitorErrorCollected - Callback invoked with each error caught by the monitor (e.g. to + * forward it to telemetry). Fixed for the lifetime of the monitor. + * @returns A {@link Monitor}. + */ +export function createMonitor(display: Display, onMonitorErrorCollected: (error: unknown) => void): Monitor { + function monitored unknown>( + _: any, + __: string, + descriptor: TypedPropertyDescriptor + ) { + const originalMethod = descriptor.value! + descriptor.value = function (this: ThisParameterType, ...args: Parameters): ReturnType { + return monitor(originalMethod).apply(this, args) as ReturnType + } as T + } + + function monitor unknown>(fn: T): T { + return function (this: ThisParameterType, ...args: Parameters) { + return callMonitored(fn, this, args) + } as unknown as T // consider output type has input type + } + + function callMonitored unknown>( + fn: T, + context: ThisParameterType, + args: Parameters + ): ReturnType | undefined + function callMonitored unknown>(fn: T): ReturnType | undefined + function callMonitored unknown>( + fn: T, + context?: any, + args?: any + ): ReturnType | undefined { + try { + return fn.apply(context, args) as ReturnType + } catch (e) { + monitorError(e) + } + } + + function monitorError(e: unknown) { + display.ifDebugEnabled.error('[MONITOR]', e) + try { + onMonitorErrorCollected(e) + } catch (e) { + display.ifDebugEnabled.error('[MONITOR]', e) + } + } + + return { + monitored, + monitor, + callMonitored, + monitorError, + } +} diff --git a/packages/js-core/src/entries/util.ts b/packages/js-core/src/entries/util.ts new file mode 100644 index 0000000000..d82717afa4 --- /dev/null +++ b/packages/js-core/src/entries/util.ts @@ -0,0 +1,2 @@ +export { createDisplay, setDebugMode } from '../util/display' +export type { Display } from '../util/display' diff --git a/packages/js-core/src/util/display.ts b/packages/js-core/src/util/display.ts new file mode 100644 index 0000000000..bd5b3a9496 --- /dev/null +++ b/packages/js-core/src/util/display.ts @@ -0,0 +1,107 @@ +/* eslint-disable local-rules/disallow-side-effects */ +/** + * Keep references on console methods to avoid triggering patched behaviors + * + * NB: in some setup, console could already be patched by another SDK. + * In this case, some display messages can be sent by the other SDK + * but we should be safe from infinite loop nonetheless. + */ + +const ConsoleApiName = { + log: 'log', + debug: 'debug', + info: 'info', + warn: 'warn', + error: 'error', +} as const + +type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName] + +let debugMode = false + +/** + * Enables or disables debug-mode logging globally. + * + * This is a global toggle: when enabled, every `Display`'s {@link Display.ifDebugEnabled} methods + * emit to the console; otherwise they are silent. The always-on methods are unaffected. + * + * @param newDebugMode - `true` to emit `ifDebugEnabled` messages, `false` to stay silent. + */ +export function setDebugMode(newDebugMode: boolean) { + debugMode = newDebugMode +} + +/** A set of console methods, pre-bound to the original (unpatched) console implementation. */ +interface ConsoleMethods { + debug: typeof console.debug + log: typeof console.log + info: typeof console.info + warn: typeof console.warn + error: typeof console.error +} + +/** + * Console methods pre-bound to the original (unpatched) console, plus a debug-gated variant. + * + * The top-level methods always emit. The {@link Display.ifDebugEnabled} methods mirror them but + * only emit when debug mode is enabled (see {@link setDebugMode}), so callers can choose per call. + */ +export interface Display extends ConsoleMethods { + /** Same console methods, but each only emits when debug mode is enabled. */ + ifDebugEnabled: ConsoleMethods +} + +/** + * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove + * "console.*" references. This causes some issue as we expect `console.*` to be defined. + * As a workaround, let's use a variable alias, so those expressions won't be taken into account by + * simple static analysis. + * + * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/ + * [2]: https://github.com/terser/terser#compress-options (look for drop_console) + */ +const globalConsole = console + +const originalConsoleMethods = {} as ConsoleMethods +Object.keys(ConsoleApiName).forEach((name) => { + originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName] +}) + +/** + * Creates a {@link Display} bound to the original (unpatched) console methods, prefixing every + * message with the given prefix. + * + * Capturing the original console methods up front avoids triggering behaviors added by another SDK + * (or the host application) that may have patched `console.*` afterwards. + * + * @param prefix - String prepended to every logged message (e.g. to attribute output to an SDK). + * @returns A {@link Display} whose methods forward to the original console methods. + */ +export function createDisplay(prefix: string): Display { + const debug = originalConsoleMethods.debug.bind(globalConsole, prefix) + const log = originalConsoleMethods.log.bind(globalConsole, prefix) + const info = originalConsoleMethods.info.bind(globalConsole, prefix) + const warn = originalConsoleMethods.warn.bind(globalConsole, prefix) + const error = originalConsoleMethods.error.bind(globalConsole, prefix) + + return { + debug, + log, + info, + warn, + error, + ifDebugEnabled: { + debug: (...args) => emitIfDebugEnabled(debug, args), + log: (...args) => emitIfDebugEnabled(log, args), + info: (...args) => emitIfDebugEnabled(info, args), + warn: (...args) => emitIfDebugEnabled(warn, args), + error: (...args) => emitIfDebugEnabled(error, args), + }, + } +} + +function emitIfDebugEnabled(method: (...args: any[]) => void, args: any[]) { + if (debugMode) { + method(...args) + } +} diff --git a/packages/js-core/util/package.json b/packages/js-core/util/package.json new file mode 100644 index 0000000000..7573e46555 --- /dev/null +++ b/packages/js-core/util/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "main": "../cjs/entries/util.js", + "module": "../esm/entries/util.js", + "types": "../cjs/entries/util.d.ts" +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 686d9a1b9f..f39d58460e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -46,7 +46,9 @@ "@datadog/browser-debugger": ["./packages/browser-debugger/src/entries/main"], - "@datadog/js-core/time": ["./packages/js-core/src/entries/time"] + "@datadog/js-core/time": ["./packages/js-core/src/entries/time"], + "@datadog/js-core/monitor": ["./packages/js-core/src/entries/monitor"], + "@datadog/js-core/util": ["./packages/js-core/src/entries/util"] } } } From c19bd7eb36ef3178da92a3add68df4f23c2dbead Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 9 Jun 2026 15:28:26 +0200 Subject: [PATCH 12/19] =?UTF-8?q?=E2=9C=85=20Add=20unit=20tests=20for=20@d?= =?UTF-8?q?atadog/js-core=20monitor=20and=20display?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - monitor.spec.ts: adapts the browser-core monitor spec to the createMonitor factory API, injecting a fake Display and a spy error callback - util/display.spec.ts: covers each console method (always-on + ifDebugEnabled gating), asserting the prefixed console call; resets debug mode with afterEach - make display.ifDebugEnabled delegate to the display's public methods so the gating is observable in tests (and respects method overrides) - export originalConsoleMethods as a test seam (kept out of the util barrel) - tidy monitor JSDoc to satisfy jsdoc lint rules --- packages/js-core/src/entries/monitor.ts | 20 +-- packages/js-core/src/monitor.spec.ts | 167 ++++++++++++++++++++++ packages/js-core/src/util/display.spec.ts | 46 ++++++ packages/js-core/src/util/display.ts | 39 ++--- 4 files changed, 236 insertions(+), 36 deletions(-) create mode 100644 packages/js-core/src/monitor.spec.ts create mode 100644 packages/js-core/src/util/display.spec.ts diff --git a/packages/js-core/src/entries/monitor.ts b/packages/js-core/src/entries/monitor.ts index d152366ba8..094005464e 100644 --- a/packages/js-core/src/entries/monitor.ts +++ b/packages/js-core/src/entries/monitor.ts @@ -4,25 +4,14 @@ import type { Display } from './util' export interface Monitor { /** * TypeScript method decorator that routes a class method through {@link Monitor.monitor}, so any - * error it throws is caught and reported instead of propagating to the caller. + * error it throws is caught and reported instead of propagating to the caller. Apply it as + * `@monitored` on the method (it replaces the method's descriptor value with the monitored + * wrapper). * * When to use: prefer this for **class methods** that are entry points from outside the SDK * (public API methods, lifecycle callbacks) where an internal error must never reach the host * application. For standalone functions or inline blocks, use {@link Monitor.monitor} or * {@link Monitor.callMonitored} instead. - * - * @param descriptor - Property descriptor of the decorated method; its `value` is replaced with - * the monitored wrapper. - * - * @example - * ```ts - * class Logger { - * @monitored - * logImplementation(message: string) { - * // if this throws, the error is collected and reported, not propagated to the caller - * } - * } - * ``` */ monitored: unknown>( _: any, @@ -40,7 +29,6 @@ export interface Monitor { * * @param fn - The function to wrap. * @returns A function with the same signature that never throws (errors are collected instead). - * * @example * ```ts * element.addEventListener( @@ -65,7 +53,6 @@ export interface Monitor { * @param context - `this` value to invoke `fn` with (optional for context-free functions). * @param args - Arguments to invoke `fn` with (optional for context-free functions). * @returns The result of `fn`, or `undefined` if it threw. - * * @example * ```ts * callMonitored(() => { @@ -93,7 +80,6 @@ export interface Monitor { * handle synchronous throws). * * @param e - The error to report. - * * @example * ```ts * // route a promise rejection to telemetry diff --git a/packages/js-core/src/monitor.spec.ts b/packages/js-core/src/monitor.spec.ts new file mode 100644 index 0000000000..2778e5cc28 --- /dev/null +++ b/packages/js-core/src/monitor.spec.ts @@ -0,0 +1,167 @@ +import type { Display } from './util' +import type { Monitor } from './monitor' +import { createMonitor } from './monitor' + +describe('monitor', () => { + let onMonitorErrorCollectedSpy: jasmine.Spy<(error: unknown) => void> + let displayErrorSpy: jasmine.Spy + let currentMonitor: Monitor + + function createFakeDisplay(): Display { + displayErrorSpy = jasmine.createSpy('ifDebugEnabled.error') + return { + debug: jasmine.createSpy(), + log: jasmine.createSpy(), + info: jasmine.createSpy(), + warn: jasmine.createSpy(), + error: jasmine.createSpy(), + ifDebugEnabled: { + debug: jasmine.createSpy(), + log: jasmine.createSpy(), + info: jasmine.createSpy(), + warn: jasmine.createSpy(), + error: displayErrorSpy, + }, + } + } + + beforeEach(() => { + onMonitorErrorCollectedSpy = jasmine.createSpy() + currentMonitor = createMonitor(createFakeDisplay(), onMonitorErrorCollectedSpy) + }) + + describe('decorator', () => { + interface CandidateApi { + monitoredThrowing: () => void + monitoredStringErrorThrowing: () => void + monitoredObjectErrorThrowing: () => void + monitoredNotThrowing: () => number + notMonitoredThrowing: () => void + } + + let candidate: CandidateApi + + beforeEach(() => { + const { monitored } = currentMonitor + + class Candidate implements CandidateApi { + @monitored + monitoredThrowing() { + throw new Error('monitored') + } + + @monitored + monitoredStringErrorThrowing() { + // eslint-disable-next-line @typescript-eslint/only-throw-error + throw 'string error' + } + + @monitored + monitoredObjectErrorThrowing() { + // eslint-disable-next-line @typescript-eslint/only-throw-error + throw { foo: 'bar' } + } + + @monitored + monitoredNotThrowing() { + return 1 + } + + notMonitoredThrowing() { + throw new Error('not monitored') + } + } + + candidate = new Candidate() + }) + + it('should preserve original behavior', () => { + expect(candidate.monitoredNotThrowing()).toEqual(1) + }) + + it('should catch error', () => { + expect(() => candidate.notMonitoredThrowing()).toThrowError() + expect(() => candidate.monitoredThrowing()).not.toThrowError() + }) + + it('should report error', () => { + candidate.monitoredThrowing() + + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('monitored')) + }) + + it('should report string error', () => { + candidate.monitoredStringErrorThrowing() + + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith('string error') + }) + + it('should report object error', () => { + candidate.monitoredObjectErrorThrowing() + + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith({ foo: 'bar' }) + }) + }) + + describe('function', () => { + const notThrowing = () => 1 + const throwing = () => { + throw new Error('error') + } + + describe('callMonitored', () => { + it('should preserve original behavior', () => { + expect(currentMonitor.callMonitored(notThrowing)).toEqual(1) + }) + + it('should catch error', () => { + expect(() => currentMonitor.callMonitored(throwing)).not.toThrowError() + }) + + it('should report error', () => { + currentMonitor.callMonitored(throwing) + + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('error')) + }) + }) + + describe('monitor (wrapper)', () => { + it('should preserve original behavior', () => { + const decorated = currentMonitor.monitor(notThrowing) + expect(decorated()).toEqual(1) + }) + + it('should catch error', () => { + const decorated = currentMonitor.monitor(throwing) + expect(() => decorated()).not.toThrowError() + }) + + it('should report error', () => { + currentMonitor.monitor(throwing)() + + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('error')) + }) + }) + }) + + describe('debug logging', () => { + it('logs caught errors through the display debug-gated facet', () => { + currentMonitor.callMonitored(() => { + throw new Error('message') + }) + + expect(displayErrorSpy).toHaveBeenCalledWith('[MONITOR]', new Error('message')) + }) + + it('logs errors thrown by the onMonitorErrorCollected callback', () => { + onMonitorErrorCollectedSpy.and.throwError(new Error('unexpected')) + + currentMonitor.callMonitored(() => { + throw new Error('message') + }) + + expect(displayErrorSpy).toHaveBeenCalledWith('[MONITOR]', new Error('message')) + expect(displayErrorSpy).toHaveBeenCalledWith('[MONITOR]', new Error('unexpected')) + }) + }) +}) diff --git a/packages/js-core/src/util/display.spec.ts b/packages/js-core/src/util/display.spec.ts new file mode 100644 index 0000000000..51a0d38874 --- /dev/null +++ b/packages/js-core/src/util/display.spec.ts @@ -0,0 +1,46 @@ +import type { Display } from './display' +import { createDisplay, originalConsoleMethods, setDebugMode } from './display' + +const CONSOLE_METHODS = ['debug', 'log', 'info', 'warn', 'error'] as const + +describe('display', () => { + afterEach(() => { + setDebugMode(false) + }) + + CONSOLE_METHODS.forEach((method) => { + describe(`${method}()`, () => { + let consoleSpy: jasmine.Spy + let display: Display + + beforeEach(() => { + // Spy on the captured original *before* creating the display: createDisplay binds + // `originalConsoleMethods[method]` at call time, so the bound method forwards to the spy. + consoleSpy = spyOn(originalConsoleMethods, method) + display = createDisplay('[PREFIX]') + }) + + it('always logs to the console method, prefixed', () => { + display[method]('message') + + expect(consoleSpy).toHaveBeenCalledOnceWith('[PREFIX]', 'message') + }) + + describe('ifDebugEnabled', () => { + it('does not log when debug mode is disabled', () => { + display.ifDebugEnabled[method]('message') + + expect(consoleSpy).not.toHaveBeenCalled() + }) + + it('logs to the console method, prefixed, when debug mode is enabled', () => { + setDebugMode(true) + + display.ifDebugEnabled[method]('message') + + expect(consoleSpy).toHaveBeenCalledOnceWith('[PREFIX]', 'message') + }) + }) + }) + }) +}) diff --git a/packages/js-core/src/util/display.ts b/packages/js-core/src/util/display.ts index bd5b3a9496..964d1886da 100644 --- a/packages/js-core/src/util/display.ts +++ b/packages/js-core/src/util/display.ts @@ -62,7 +62,9 @@ export interface Display extends ConsoleMethods { */ const globalConsole = console -const originalConsoleMethods = {} as ConsoleMethods +// Exported (but intentionally not re-exported from the `util` barrel, so it stays out of the public +// API) as a test seam: `createDisplay` reads these at call time, so a spec can spy on them. +export const originalConsoleMethods = {} as ConsoleMethods Object.keys(ConsoleApiName).forEach((name) => { originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName] }) @@ -78,26 +80,25 @@ Object.keys(ConsoleApiName).forEach((name) => { * @returns A {@link Display} whose methods forward to the original console methods. */ export function createDisplay(prefix: string): Display { - const debug = originalConsoleMethods.debug.bind(globalConsole, prefix) - const log = originalConsoleMethods.log.bind(globalConsole, prefix) - const info = originalConsoleMethods.info.bind(globalConsole, prefix) - const warn = originalConsoleMethods.warn.bind(globalConsole, prefix) - const error = originalConsoleMethods.error.bind(globalConsole, prefix) + const display = { + debug: originalConsoleMethods.debug.bind(globalConsole, prefix), + log: originalConsoleMethods.log.bind(globalConsole, prefix), + info: originalConsoleMethods.info.bind(globalConsole, prefix), + warn: originalConsoleMethods.warn.bind(globalConsole, prefix), + error: originalConsoleMethods.error.bind(globalConsole, prefix), + } as Display - return { - debug, - log, - info, - warn, - error, - ifDebugEnabled: { - debug: (...args) => emitIfDebugEnabled(debug, args), - log: (...args) => emitIfDebugEnabled(log, args), - info: (...args) => emitIfDebugEnabled(info, args), - warn: (...args) => emitIfDebugEnabled(warn, args), - error: (...args) => emitIfDebugEnabled(error, args), - }, + // Delegate through the display's own methods (rather than the bound consts) so an override of, + // say, `display.error` is respected by `display.ifDebugEnabled.error` too. + display.ifDebugEnabled = { + debug: (...args) => emitIfDebugEnabled(display.debug, args), + log: (...args) => emitIfDebugEnabled(display.log, args), + info: (...args) => emitIfDebugEnabled(display.info, args), + warn: (...args) => emitIfDebugEnabled(display.warn, args), + error: (...args) => emitIfDebugEnabled(display.error, args), } + + return display } function emitIfDebugEnabled(method: (...args: any[]) => void, args: any[]) { From 296422788f19bae7e981bfeff0854d5ea7477ab9 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Wed, 10 Jun 2026 12:37:51 +0200 Subject: [PATCH 13/19] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Migrate=20browser-co?= =?UTF-8?q?re=20monitoring/display=20to=20@datadog/js-core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move debug-mode state out of `display.ts` into a dedicated `debug.ts` (`setDebugMode`/`getDebugMode`) and drop the `ifDebugEnabled` facet from `Display` - Export `ConsoleApiName`, `globalConsole`, `originalConsoleMethods` from the `@datadog/js-core/util` barrel - Re-implement browser-core `monitor`/`display` on top of `@datadog/js-core` (`createMonitor`, `createDisplay`) and update consumers across browser-core, browser-logs, browser-rum-core and browser-debugger to import from js-core - Whitelist `@datadog/js-core/util` and `/monitor` as side-effect-free --- eslint-local-rules/disallowSideEffects.ts | 2 + .../src/domain/bufferedData.spec.ts | 2 +- .../browser-core/src/domain/bufferedData.ts | 2 +- .../domain/console/consoleObservable.spec.ts | 2 +- .../src/domain/console/consoleObservable.ts | 2 +- .../src/domain/telemetry/telemetry.ts | 9 ++- packages/browser-core/src/tools/display.ts | 56 +------------- .../browser-core/src/tools/monitor.spec.ts | 4 +- packages/browser-core/src/tools/monitor.ts | 76 ++++--------------- .../src/domain/display.spec.ts | 2 +- .../browser-debugger/src/domain/display.ts | 4 +- .../browser-logs/src/domain/configuration.ts | 2 +- .../domain/console/consoleCollection.spec.ts | 11 +-- .../src/domain/console/consoleCollection.ts | 3 +- .../domain/logger/loggerCollection.spec.ts | 3 +- .../src/domain/logger/loggerCollection.ts | 3 +- packages/browser-logs/src/entries/main.ts | 2 +- .../src/domain/error/errorCollection.ts | 2 +- packages/js-core/CLAUDE.md | 3 + packages/js-core/README.md | 31 ++++++-- .../js-core/src/{ => entries}/monitor.spec.ts | 31 +++++--- packages/js-core/src/entries/monitor.ts | 13 +++- packages/js-core/src/entries/util.ts | 3 +- packages/js-core/src/util/debug.spec.ts | 19 +++++ packages/js-core/src/util/debug.ts | 22 ++++++ packages/js-core/src/util/display.spec.ts | 44 ++--------- packages/js-core/src/util/display.ts | 72 ++++-------------- 27 files changed, 169 insertions(+), 256 deletions(-) create mode 100644 packages/js-core/CLAUDE.md rename packages/js-core/src/{ => entries}/monitor.spec.ts (88%) create mode 100644 packages/js-core/src/util/debug.spec.ts create mode 100644 packages/js-core/src/util/debug.ts diff --git a/eslint-local-rules/disallowSideEffects.ts b/eslint-local-rules/disallowSideEffects.ts index 08a07e76c1..77d2373714 100644 --- a/eslint-local-rules/disallowSideEffects.ts +++ b/eslint-local-rules/disallowSideEffects.ts @@ -46,6 +46,8 @@ const pathsWithSideEffect = new Set([ // Those packages are known to have no side effects when evaluated const packagesWithoutSideEffect = new Set([ '@datadog/js-core/time', + '@datadog/js-core/util', + '@datadog/js-core/monitor', '@datadog/browser-core', '@datadog/browser-rum-core', '@datadog/browser-rum-react/internal', diff --git a/packages/browser-core/src/domain/bufferedData.spec.ts b/packages/browser-core/src/domain/bufferedData.spec.ts index 48d6e7a325..fc89a8851b 100644 --- a/packages/browser-core/src/domain/bufferedData.spec.ts +++ b/packages/browser-core/src/domain/bufferedData.spec.ts @@ -1,10 +1,10 @@ import { clocksNow } from '@datadog/js-core/time' +import { ConsoleApiName } from '@datadog/js-core/util' import type { MockFetch } from '../../test' import { collectAsyncCalls, mockFetch, mockXhr, registerCleanupTask, replaceMockable, withXhr } from '../../test' import { Observable } from '../tools/observable' import { resetFetchObservable } from '../browser/fetchObservable' import { resetXhrObservable } from '../browser/xhrObservable' -import { ConsoleApiName } from '../tools/display' import { noop } from '../tools/utils/functionUtils' import { resetConsoleObservable } from './console/consoleObservable' import type { BufferedData } from './bufferedData' diff --git a/packages/browser-core/src/domain/bufferedData.ts b/packages/browser-core/src/domain/bufferedData.ts index 844ae7ba0f..ba22f9d542 100644 --- a/packages/browser-core/src/domain/bufferedData.ts +++ b/packages/browser-core/src/domain/bufferedData.ts @@ -1,3 +1,4 @@ +import { ConsoleApiName } from '@datadog/js-core/util' import type { Observable, Subscription } from '../tools/observable' import { BufferedObservable } from '../tools/observable' import { mockable } from '../tools/mockable' @@ -5,7 +6,6 @@ import type { FetchContext } from '../browser/fetchObservable' import { initFetchObservable } from '../browser/fetchObservable' import type { XhrContext } from '../browser/xhrObservable' import { initXhrObservable } from '../browser/xhrObservable' -import { ConsoleApiName } from '../tools/display' import { addTelemetryDebug } from './telemetry' import type { RawError } from './error/error.types' import { trackRuntimeError } from './error/trackRuntimeError' diff --git a/packages/browser-core/src/domain/console/consoleObservable.spec.ts b/packages/browser-core/src/domain/console/consoleObservable.spec.ts index 0ee54da487..1b1ce6b5e1 100644 --- a/packages/browser-core/src/domain/console/consoleObservable.spec.ts +++ b/packages/browser-core/src/domain/console/consoleObservable.spec.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ +import { ConsoleApiName } from '@datadog/js-core/util' import { ignoreConsoleLogs } from '../../../test' -import { ConsoleApiName } from '../../tools/display' import type { Subscription } from '../../tools/observable' import type { ErrorConsoleLog } from './consoleObservable' import { initConsoleObservable } from './consoleObservable' diff --git a/packages/browser-core/src/domain/console/consoleObservable.ts b/packages/browser-core/src/domain/console/consoleObservable.ts index 7a515dcf0a..c9802c46c1 100644 --- a/packages/browser-core/src/domain/console/consoleObservable.ts +++ b/packages/browser-core/src/domain/console/consoleObservable.ts @@ -1,7 +1,7 @@ import { clocksNow } from '@datadog/js-core/time' +import { ConsoleApiName, globalConsole } from '@datadog/js-core/util' import { isError, computeRawError } from '../error/error' import { Observable, mergeObservables } from '../../tools/observable' -import { ConsoleApiName, globalConsole } from '../../tools/display' import { callMonitored } from '../../tools/monitor' import { sanitize } from '../../tools/serialisation/sanitize' import { jsonStringify } from '../../tools/serialisation/jsonStringify' diff --git a/packages/browser-core/src/domain/telemetry/telemetry.ts b/packages/browser-core/src/domain/telemetry/telemetry.ts index 339e010da2..69e22f03f2 100644 --- a/packages/browser-core/src/domain/telemetry/telemetry.ts +++ b/packages/browser-core/src/domain/telemetry/telemetry.ts @@ -1,6 +1,6 @@ import { clocksNow } from '@datadog/js-core/time' +import { getDebugMode } from '@datadog/js-core/util' import type { Context } from '../../tools/serialisation/context' -import { ConsoleApiName } from '../../tools/display' import { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error' import { toStackTraceString } from '../../tools/stackTrace/handlingStack' import { getExperimentalFeatures } from '../../tools/experimentalFeatures' @@ -9,7 +9,8 @@ import type { Configuration } from '../configuration' import { buildTags } from '../tags' import { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED, INTAKE_SITE_US2_FED } from '../intakeSites' import { BufferedObservable, Observable } from '../../tools/observable' -import { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor' +import { startMonitorErrorCollection } from '../../tools/monitor' +import { display } from '../../tools/display' import { sendToExtension } from '../../tools/sendToExtension' import { performDraw } from '../../tools/utils/numberUtils' import { jsonStringify } from '../../tools/serialisation/jsonStringify' @@ -261,7 +262,9 @@ function isTelemetryReplicationAllowed(configuration: Configuration) { } export function addTelemetryDebug(message: string, context?: Context) { - displayIfDebugEnabled(ConsoleApiName.debug, message, context) + if (getDebugMode()) { + display.debug('[Telemetry]', message, context) + } getTelemetryObservable().notify({ rawEvent: { type: TelemetryType.LOG, diff --git a/packages/browser-core/src/tools/display.ts b/packages/browser-core/src/tools/display.ts index 1d5002e75d..2bf50629f2 100644 --- a/packages/browser-core/src/tools/display.ts +++ b/packages/browser-core/src/tools/display.ts @@ -1,59 +1,7 @@ /* eslint-disable local-rules/disallow-side-effects */ -/** - * Keep references on console methods to avoid triggering patched behaviors - * - * NB: in some setup, console could already be patched by another SDK. - * In this case, some display messages can be sent by the other SDK - * but we should be safe from infinite loop nonetheless. - */ +import { createDisplay } from '@datadog/js-core/util' -export const ConsoleApiName = { - log: 'log', - debug: 'debug', - info: 'info', - warn: 'warn', - error: 'error', -} as const - -export type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName] - -export interface Display { - debug: typeof console.debug - log: typeof console.log - info: typeof console.info - warn: typeof console.warn - error: typeof console.error -} - -/** - * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove - * "console.*" references. This causes some issue as we expect `console.*` to be defined. - * As a workaround, let's use a variable alias, so those expressions won't be taken into account by - * simple static analysis. - * - * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/ - * [2]: https://github.com/terser/terser#compress-options (look for drop_console) - */ -export const globalConsole = console - -export const originalConsoleMethods = {} as Display -Object.keys(ConsoleApiName).forEach((name) => { - originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName] -}) - -const PREFIX = 'Datadog Browser SDK:' - -export function createDisplay(prefix: string): Display { - return { - debug: originalConsoleMethods.debug.bind(globalConsole, prefix), - log: originalConsoleMethods.log.bind(globalConsole, prefix), - info: originalConsoleMethods.info.bind(globalConsole, prefix), - warn: originalConsoleMethods.warn.bind(globalConsole, prefix), - error: originalConsoleMethods.error.bind(globalConsole, prefix), - } -} - -export const display: Display = createDisplay(PREFIX) +export const display = createDisplay('Datadog Browser SDK:') export const DOCS_ORIGIN = 'https://docs.datadoghq.com' export const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting` diff --git a/packages/browser-core/src/tools/monitor.spec.ts b/packages/browser-core/src/tools/monitor.spec.ts index 63cfb8616a..c79afdf52d 100644 --- a/packages/browser-core/src/tools/monitor.spec.ts +++ b/packages/browser-core/src/tools/monitor.spec.ts @@ -43,9 +43,9 @@ describe('monitor', () => { }) describe('before initialization', () => { - it('should not monitor', () => { + it('catches monitored errors but does not report them (no collection callback yet)', () => { expect(() => candidate.notMonitoredThrowing()).toThrowError('not monitored') - expect(() => candidate.monitoredThrowing()).toThrowError('monitored') + expect(() => candidate.monitoredThrowing()).not.toThrowError() expect(candidate.monitoredNotThrowing()).toEqual(1) }) }) diff --git a/packages/browser-core/src/tools/monitor.ts b/packages/browser-core/src/tools/monitor.ts index 3edee8c35f..797b3f93bc 100644 --- a/packages/browser-core/src/tools/monitor.ts +++ b/packages/browser-core/src/tools/monitor.ts @@ -1,70 +1,26 @@ +/* eslint-disable local-rules/disallow-side-effects */ +import { createMonitor } from '@datadog/js-core/monitor' +import { setDebugMode } from '@datadog/js-core/util' import { display } from './display' -let onMonitorErrorCollected: undefined | ((error: unknown) => void) -let debugMode = false +export { setDebugMode } + +// The error-collection callback is wired lazily (via `startMonitorErrorCollection`, during telemetry +// init), so we pass a stable forwarding function to `createMonitor` and keep the real callback in a +// mutable holder. +let onMonitorErrorCollected: ((error: unknown) => void) | undefined + +const { monitored, monitor, callMonitored, monitorError } = createMonitor(display, (error) => + onMonitorErrorCollected?.(error) +) + +export { monitored, monitor, callMonitored, monitorError } export function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) { onMonitorErrorCollected = newOnMonitorErrorCollected } -export function setDebugMode(newDebugMode: boolean) { - debugMode = newDebugMode -} - export function resetMonitor() { onMonitorErrorCollected = undefined - debugMode = false -} - -export function monitored unknown>( - _: any, - __: string, - descriptor: TypedPropertyDescriptor -) { - const originalMethod = descriptor.value! - descriptor.value = function (this: ThisParameterType, ...args: Parameters): ReturnType { - const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod - return decorated.apply(this, args) as ReturnType - } as T -} - -export function monitor unknown>(fn: T): T { - return function (this: ThisParameterType, ...args: Parameters) { - return callMonitored(fn, this, args) - } as unknown as T // consider output type has input type -} - -export function callMonitored unknown>( - fn: T, - context: ThisParameterType, - args: Parameters -): ReturnType | undefined -export function callMonitored unknown>(fn: T): ReturnType | undefined -export function callMonitored unknown>( - fn: T, - context?: any, - args?: any -): ReturnType | undefined { - try { - return fn.apply(context, args) as ReturnType - } catch (e) { - monitorError(e) - } -} - -export function monitorError(e: unknown) { - displayIfDebugEnabled(e) - if (onMonitorErrorCollected) { - try { - onMonitorErrorCollected(e) - } catch (e) { - displayIfDebugEnabled(e) - } - } -} - -export function displayIfDebugEnabled(...args: unknown[]) { - if (debugMode) { - display.error('[MONITOR]', ...args) - } + setDebugMode(false) } diff --git a/packages/browser-debugger/src/domain/display.spec.ts b/packages/browser-debugger/src/domain/display.spec.ts index 086e3cd088..65feb27d60 100644 --- a/packages/browser-debugger/src/domain/display.spec.ts +++ b/packages/browser-debugger/src/domain/display.spec.ts @@ -1,4 +1,4 @@ -import { createDisplay, originalConsoleMethods } from '@datadog/browser-core' +import { createDisplay, originalConsoleMethods } from '@datadog/js-core/util' import { DEBUGGER_DISPLAY_PREFIX } from './display' describe('debugger display', () => { diff --git a/packages/browser-debugger/src/domain/display.ts b/packages/browser-debugger/src/domain/display.ts index 964fa1c362..613bc3b56b 100644 --- a/packages/browser-debugger/src/domain/display.ts +++ b/packages/browser-debugger/src/domain/display.ts @@ -1,5 +1,5 @@ -import type { Display } from '@datadog/browser-core' -import { createDisplay } from '@datadog/browser-core' +import { createDisplay } from '@datadog/js-core/util' +import type { Display } from '@datadog/js-core/util' export const DEBUGGER_DISPLAY_PREFIX = 'Datadog Debugger SDK:' // eslint-disable-next-line local-rules/disallow-side-effects diff --git a/packages/browser-logs/src/domain/configuration.ts b/packages/browser-logs/src/domain/configuration.ts index 156a2a3bba..3d3517706a 100644 --- a/packages/browser-logs/src/domain/configuration.ts +++ b/packages/browser-logs/src/domain/configuration.ts @@ -1,11 +1,11 @@ import type { Configuration, InitConfiguration, RawTelemetryConfiguration } from '@datadog/browser-core' +import { ConsoleApiName } from '@datadog/js-core/util' import { serializeConfiguration, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, - ConsoleApiName, RawReportType, objectValues, } from '@datadog/browser-core' diff --git a/packages/browser-logs/src/domain/console/consoleCollection.spec.ts b/packages/browser-logs/src/domain/console/consoleCollection.spec.ts index f674ee6b72..999e577ef9 100644 --- a/packages/browser-logs/src/domain/console/consoleCollection.spec.ts +++ b/packages/browser-logs/src/domain/console/consoleCollection.spec.ts @@ -1,14 +1,7 @@ import type { BufferedData, ConsoleLog, RawError } from '@datadog/browser-core' import { clocksNow } from '@datadog/js-core/time' -import { - BufferedDataType, - ConsoleApiName, - ErrorHandling, - ErrorSource, - Observable, - noop, - objectEntries, -} from '@datadog/browser-core' +import { ConsoleApiName } from '@datadog/js-core/util' +import { BufferedDataType, ErrorHandling, ErrorSource, Observable, noop, objectEntries } from '@datadog/browser-core' import type { RawConsoleLogsEvent } from '../../rawLogsEvent.types' import { validateAndBuildLogsConfiguration } from '../configuration' import type { RawLogsEventCollectedData } from '../lifeCycle' diff --git a/packages/browser-logs/src/domain/console/consoleCollection.ts b/packages/browser-logs/src/domain/console/consoleCollection.ts index ff1e3df30b..7711c2f4b6 100644 --- a/packages/browser-logs/src/domain/console/consoleCollection.ts +++ b/packages/browser-logs/src/domain/console/consoleCollection.ts @@ -1,7 +1,8 @@ import type { ClocksState } from '@datadog/js-core/time' import type { Context, Observable, BufferedData } from '@datadog/browser-core' import { timeStampNow } from '@datadog/js-core/time' -import { BufferedDataType, ConsoleApiName, ErrorSource } from '@datadog/browser-core' +import { BufferedDataType, ErrorSource } from '@datadog/browser-core' +import { ConsoleApiName } from '@datadog/js-core/util' import type { LogsConfiguration } from '../configuration' import type { LifeCycle, RawLogsEventCollectedData } from '../lifeCycle' import { LifeCycleEventType } from '../lifeCycle' diff --git a/packages/browser-logs/src/domain/logger/loggerCollection.spec.ts b/packages/browser-logs/src/domain/logger/loggerCollection.spec.ts index c0e46dc336..b6957a36db 100644 --- a/packages/browser-logs/src/domain/logger/loggerCollection.spec.ts +++ b/packages/browser-logs/src/domain/logger/loggerCollection.spec.ts @@ -1,6 +1,7 @@ import type { TimeStamp } from '@datadog/js-core/time' import { timeStampNow } from '@datadog/js-core/time' -import { ConsoleApiName, ErrorSource, originalConsoleMethods } from '@datadog/browser-core' +import { ErrorSource } from '@datadog/browser-core' +import { ConsoleApiName, originalConsoleMethods } from '@datadog/js-core/util' import { mockClock } from '@datadog/browser-core/test' import type { CommonContext, RawLoggerLogsEvent } from '../../rawLogsEvent.types' import type { RawLogsEventCollectedData } from '../lifeCycle' diff --git a/packages/browser-logs/src/domain/logger/loggerCollection.ts b/packages/browser-logs/src/domain/logger/loggerCollection.ts index f07cae5ad9..e21b247c70 100644 --- a/packages/browser-logs/src/domain/logger/loggerCollection.ts +++ b/packages/browser-logs/src/domain/logger/loggerCollection.ts @@ -1,7 +1,8 @@ import { timeStampNow } from '@datadog/js-core/time' import type { TimeStamp } from '@datadog/js-core/time' import type { Context } from '@datadog/browser-core' -import { combine, ErrorSource, originalConsoleMethods, globalConsole, ConsoleApiName } from '@datadog/browser-core' +import { combine, ErrorSource } from '@datadog/browser-core' +import { originalConsoleMethods, globalConsole, ConsoleApiName } from '@datadog/js-core/util' import type { CommonContext, RawLogsEvent } from '../../rawLogsEvent.types' import type { LifeCycle, RawLogsEventCollectedData } from '../lifeCycle' import { LifeCycleEventType } from '../lifeCycle' diff --git a/packages/browser-logs/src/entries/main.ts b/packages/browser-logs/src/entries/main.ts index 9c384d489e..b1abf685cb 100644 --- a/packages/browser-logs/src/entries/main.ts +++ b/packages/browser-logs/src/entries/main.ts @@ -44,10 +44,10 @@ export type { MatchOption, ProxyFn, Site, - ConsoleApiName, RawReportType, ErrorSource, } from '@datadog/browser-core' +export type { ConsoleApiName } from '@datadog/js-core/util' /** * The global Logs instance. Use this to call Logs methods. diff --git a/packages/browser-rum-core/src/domain/error/errorCollection.ts b/packages/browser-rum-core/src/domain/error/errorCollection.ts index e4bd4c972a..affff7f3a9 100644 --- a/packages/browser-rum-core/src/domain/error/errorCollection.ts +++ b/packages/browser-rum-core/src/domain/error/errorCollection.ts @@ -1,8 +1,8 @@ import type { ClocksState } from '@datadog/js-core/time' +import { ConsoleApiName } from '@datadog/js-core/util' import type { Context, RawError, BufferedData } from '@datadog/browser-core' import { BufferedDataType, - ConsoleApiName, Observable, ErrorSource, generateUUID, diff --git a/packages/js-core/CLAUDE.md b/packages/js-core/CLAUDE.md new file mode 100644 index 0000000000..6bff40a5fe --- /dev/null +++ b/packages/js-core/CLAUDE.md @@ -0,0 +1,3 @@ +# `@datadog/js-core` package + +See @./AGENTS.md for documentation on working with the `@datadog/js-core` package. diff --git a/packages/js-core/README.md b/packages/js-core/README.md index 8f48310728..98637433e9 100644 --- a/packages/js-core/README.md +++ b/packages/js-core/README.md @@ -98,9 +98,8 @@ Error-monitoring utilities that wrap callbacks to catch, report, and suppress SD Each consumer creates its own isolated monitor via `createMonitor(display, onMonitorErrorCollected)`, so error-collection state is not shared between SDKs. The `display` (from `createDisplay` in `@datadog/js-core/util`) controls the log prefix. Both arguments are required and fixed for the -lifetime of the monitor. Caught errors are logged via the display's `ifDebugEnabled` facet, so they -only reach the console when debug mode is on (toggled globally via `setDebugMode` from -`@datadog/js-core/util`). +lifetime of the monitor. Caught errors are logged to the console via the given `display`, but only +when debug mode is on (toggled globally via `setDebugMode` from `@datadog/js-core/util`). ```ts import { createMonitor } from '@datadog/js-core/monitor' @@ -132,19 +131,35 @@ setDebugMode(true) // global: also log caught errors to the console General-purpose utilities. ```ts -import { createDisplay, setDebugMode } from '@datadog/js-core/util' +import { + createDisplay, + setDebugMode, + getDebugMode, + ConsoleApiName, + globalConsole, + originalConsoleMethods, +} from '@datadog/js-core/util' import type { Display } from '@datadog/js-core/util' ``` #### Types -| Export | Description | -| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Display` | Console methods pre-bound to the original (unpatched) console. Top-level methods always emit; `Display.ifDebugEnabled.*` emit only in debug mode. | +| Export | Description | +| --------- | ------------------------------------------------------------------------ | +| `Display` | Console methods pre-bound to the original (unpatched) console, prefixed. | + +#### Constants + +| Export | Description | +| ------------------------ | ------------------------------------------------------------------------------------ | +| `ConsoleApiName` | Enum-like map of the console method names (`log`, `debug`, `info`, `warn`, `error`). | +| `globalConsole` | Alias for the global `console`, resilient to bundler `console.*` stripping. | +| `originalConsoleMethods` | The original (unpatched) console methods, captured at module load. | #### Functions | Export | Description | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `createDisplay(prefix)` | Returns a `Display` bound to the original console methods, prefixing every message with `prefix`. Guards against patched console. | -| `setDebugMode(enabled)` | Global toggle. When `true`, every display's `ifDebugEnabled.*` methods emit to the console; otherwise they stay silent. | +| `getDebugMode()` | Returns whether debug mode is currently enabled. | +| `setDebugMode(enabled)` | Global debug-mode toggle. SDKs check `getDebugMode()` to decide whether to emit internal diagnostic logs to the console. | diff --git a/packages/js-core/src/monitor.spec.ts b/packages/js-core/src/entries/monitor.spec.ts similarity index 88% rename from packages/js-core/src/monitor.spec.ts rename to packages/js-core/src/entries/monitor.spec.ts index 2778e5cc28..658c62a4a3 100644 --- a/packages/js-core/src/monitor.spec.ts +++ b/packages/js-core/src/entries/monitor.spec.ts @@ -1,3 +1,4 @@ +import { setDebugMode } from './util' import type { Display } from './util' import type { Monitor } from './monitor' import { createMonitor } from './monitor' @@ -8,20 +9,13 @@ describe('monitor', () => { let currentMonitor: Monitor function createFakeDisplay(): Display { - displayErrorSpy = jasmine.createSpy('ifDebugEnabled.error') + displayErrorSpy = jasmine.createSpy('display.error') return { debug: jasmine.createSpy(), log: jasmine.createSpy(), info: jasmine.createSpy(), warn: jasmine.createSpy(), - error: jasmine.createSpy(), - ifDebugEnabled: { - debug: jasmine.createSpy(), - log: jasmine.createSpy(), - info: jasmine.createSpy(), - warn: jasmine.createSpy(), - error: displayErrorSpy, - }, + error: displayErrorSpy, } } @@ -145,7 +139,21 @@ describe('monitor', () => { }) describe('debug logging', () => { - it('logs caught errors through the display debug-gated facet', () => { + afterEach(() => { + setDebugMode(false) + }) + + it('does not log caught errors when debug mode is disabled', () => { + currentMonitor.callMonitored(() => { + throw new Error('message') + }) + + expect(displayErrorSpy).not.toHaveBeenCalled() + }) + + it('logs caught errors to the display when debug mode is enabled', () => { + setDebugMode(true) + currentMonitor.callMonitored(() => { throw new Error('message') }) @@ -153,7 +161,8 @@ describe('monitor', () => { expect(displayErrorSpy).toHaveBeenCalledWith('[MONITOR]', new Error('message')) }) - it('logs errors thrown by the onMonitorErrorCollected callback', () => { + it('logs errors thrown by the onMonitorErrorCollected callback when debug mode is enabled', () => { + setDebugMode(true) onMonitorErrorCollectedSpy.and.throwError(new Error('unexpected')) currentMonitor.callMonitored(() => { diff --git a/packages/js-core/src/entries/monitor.ts b/packages/js-core/src/entries/monitor.ts index 094005464e..f36d03efac 100644 --- a/packages/js-core/src/entries/monitor.ts +++ b/packages/js-core/src/entries/monitor.ts @@ -1,3 +1,4 @@ +import { getDebugMode } from './util' import type { Display } from './util' /** An isolated monitor, as returned by {@link createMonitor}. */ @@ -97,7 +98,7 @@ export interface Monitor { * * @param display - {@link Display} used for debug logging (see `createDisplay` in * `@datadog/js-core/util`). Lets the consumer control the log prefix and console binding. Debug - * output is gated by the display's `ifDebugEnabled` facet (toggled via `setDebugMode`). + * output is only emitted when debug mode is enabled (see `setDebugMode`/`getDebugMode`). * @param onMonitorErrorCollected - Callback invoked with each error caught by the monitor (e.g. to * forward it to telemetry). Fixed for the lifetime of the monitor. * @returns A {@link Monitor}. @@ -139,11 +140,17 @@ export function createMonitor(display: Display, onMonitorErrorCollected: (error: } function monitorError(e: unknown) { - display.ifDebugEnabled.error('[MONITOR]', e) + const displayIfDebugEnabled = (e: unknown) => { + if (getDebugMode()) { + display.error('[MONITOR]', e) + } + } + + displayIfDebugEnabled(e) try { onMonitorErrorCollected(e) } catch (e) { - display.ifDebugEnabled.error('[MONITOR]', e) + displayIfDebugEnabled(e) } } diff --git a/packages/js-core/src/entries/util.ts b/packages/js-core/src/entries/util.ts index d82717afa4..3bc61dfa5b 100644 --- a/packages/js-core/src/entries/util.ts +++ b/packages/js-core/src/entries/util.ts @@ -1,2 +1,3 @@ -export { createDisplay, setDebugMode } from '../util/display' +export { createDisplay, ConsoleApiName, globalConsole, originalConsoleMethods } from '../util/display' export type { Display } from '../util/display' +export { setDebugMode, getDebugMode } from '../util/debug' diff --git a/packages/js-core/src/util/debug.spec.ts b/packages/js-core/src/util/debug.spec.ts new file mode 100644 index 0000000000..e1e9304cfa --- /dev/null +++ b/packages/js-core/src/util/debug.spec.ts @@ -0,0 +1,19 @@ +import { getDebugMode, setDebugMode } from './debug' + +describe('debug mode', () => { + afterEach(() => { + setDebugMode(false) + }) + + it('is disabled by default', () => { + expect(getDebugMode()).toBe(false) + }) + + it('reflects the value set via setDebugMode', () => { + setDebugMode(true) + expect(getDebugMode()).toBe(true) + + setDebugMode(false) + expect(getDebugMode()).toBe(false) + }) +}) diff --git a/packages/js-core/src/util/debug.ts b/packages/js-core/src/util/debug.ts new file mode 100644 index 0000000000..de58de1460 --- /dev/null +++ b/packages/js-core/src/util/debug.ts @@ -0,0 +1,22 @@ +let debugMode = false + +/** + * Enables or disables debug mode globally. + * + * Debug mode is a process-wide toggle that SDKs check (via {@link getDebugMode}) to decide whether + * to emit internal diagnostic logs to the console. It does not affect any data sent to Datadog. + * + * @param newDebugMode - `true` to enable debug mode, `false` to disable it. + */ +export function setDebugMode(newDebugMode: boolean) { + debugMode = newDebugMode +} + +/** + * Returns whether debug mode is currently enabled (see {@link setDebugMode}). + * + * @returns `true` when debug mode is on. + */ +export function getDebugMode() { + return debugMode +} diff --git a/packages/js-core/src/util/display.spec.ts b/packages/js-core/src/util/display.spec.ts index 51a0d38874..ed5d63d774 100644 --- a/packages/js-core/src/util/display.spec.ts +++ b/packages/js-core/src/util/display.spec.ts @@ -1,46 +1,18 @@ -import type { Display } from './display' -import { createDisplay, originalConsoleMethods, setDebugMode } from './display' +import { createDisplay, originalConsoleMethods } from './display' const CONSOLE_METHODS = ['debug', 'log', 'info', 'warn', 'error'] as const describe('display', () => { - afterEach(() => { - setDebugMode(false) - }) - CONSOLE_METHODS.forEach((method) => { - describe(`${method}()`, () => { - let consoleSpy: jasmine.Spy - let display: Display - - beforeEach(() => { - // Spy on the captured original *before* creating the display: createDisplay binds - // `originalConsoleMethods[method]` at call time, so the bound method forwards to the spy. - consoleSpy = spyOn(originalConsoleMethods, method) - display = createDisplay('[PREFIX]') - }) - - it('always logs to the console method, prefixed', () => { - display[method]('message') - - expect(consoleSpy).toHaveBeenCalledOnceWith('[PREFIX]', 'message') - }) - - describe('ifDebugEnabled', () => { - it('does not log when debug mode is disabled', () => { - display.ifDebugEnabled[method]('message') - - expect(consoleSpy).not.toHaveBeenCalled() - }) - - it('logs to the console method, prefixed, when debug mode is enabled', () => { - setDebugMode(true) + it(`${method}() forwards to the console method, prefixed`, () => { + // Spy on the captured original *before* creating the display: createDisplay binds + // `originalConsoleMethods[method]` at call time, so the bound method forwards to the spy. + const consoleSpy = spyOn(originalConsoleMethods, method) + const display = createDisplay('[PREFIX]') - display.ifDebugEnabled[method]('message') + display[method]('message') - expect(consoleSpy).toHaveBeenCalledOnceWith('[PREFIX]', 'message') - }) - }) + expect(consoleSpy).toHaveBeenCalledOnceWith('[PREFIX]', 'message') }) }) }) diff --git a/packages/js-core/src/util/display.ts b/packages/js-core/src/util/display.ts index 964d1886da..31ca315698 100644 --- a/packages/js-core/src/util/display.ts +++ b/packages/js-core/src/util/display.ts @@ -1,4 +1,3 @@ -/* eslint-disable local-rules/disallow-side-effects */ /** * Keep references on console methods to avoid triggering patched behaviors * @@ -7,7 +6,8 @@ * but we should be safe from infinite loop nonetheless. */ -const ConsoleApiName = { +/** Names of the console methods wrapped by {@link Display}. */ +export const ConsoleApiName = { log: 'log', debug: 'debug', info: 'info', @@ -15,24 +15,11 @@ const ConsoleApiName = { error: 'error', } as const -type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName] +/** Union of the console method names (`'log' | 'debug' | 'info' | 'warn' | 'error'`). */ +export type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName] -let debugMode = false - -/** - * Enables or disables debug-mode logging globally. - * - * This is a global toggle: when enabled, every `Display`'s {@link Display.ifDebugEnabled} methods - * emit to the console; otherwise they are silent. The always-on methods are unaffected. - * - * @param newDebugMode - `true` to emit `ifDebugEnabled` messages, `false` to stay silent. - */ -export function setDebugMode(newDebugMode: boolean) { - debugMode = newDebugMode -} - -/** A set of console methods, pre-bound to the original (unpatched) console implementation. */ -interface ConsoleMethods { +/** Console methods pre-bound to the original (unpatched) console implementation. */ +export interface Display { debug: typeof console.debug log: typeof console.log info: typeof console.info @@ -40,17 +27,6 @@ interface ConsoleMethods { error: typeof console.error } -/** - * Console methods pre-bound to the original (unpatched) console, plus a debug-gated variant. - * - * The top-level methods always emit. The {@link Display.ifDebugEnabled} methods mirror them but - * only emit when debug mode is enabled (see {@link setDebugMode}), so callers can choose per call. - */ -export interface Display extends ConsoleMethods { - /** Same console methods, but each only emits when debug mode is enabled. */ - ifDebugEnabled: ConsoleMethods -} - /** * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove * "console.*" references. This causes some issue as we expect `console.*` to be defined. @@ -60,14 +36,16 @@ export interface Display extends ConsoleMethods { * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/ * [2]: https://github.com/terser/terser#compress-options (look for drop_console) */ -const globalConsole = console +export const globalConsole = console -// Exported (but intentionally not re-exported from the `util` barrel, so it stays out of the public -// API) as a test seam: `createDisplay` reads these at call time, so a spec can spy on them. -export const originalConsoleMethods = {} as ConsoleMethods -Object.keys(ConsoleApiName).forEach((name) => { - originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName] -}) +/** The original (unpatched) console methods, captured at module load. */ +export const originalConsoleMethods: Display = { + log: globalConsole.log, + debug: globalConsole.debug, + info: globalConsole.info, + warn: globalConsole.warn, + error: globalConsole.error, +} /** * Creates a {@link Display} bound to the original (unpatched) console methods, prefixing every @@ -80,29 +58,11 @@ Object.keys(ConsoleApiName).forEach((name) => { * @returns A {@link Display} whose methods forward to the original console methods. */ export function createDisplay(prefix: string): Display { - const display = { + return { debug: originalConsoleMethods.debug.bind(globalConsole, prefix), log: originalConsoleMethods.log.bind(globalConsole, prefix), info: originalConsoleMethods.info.bind(globalConsole, prefix), warn: originalConsoleMethods.warn.bind(globalConsole, prefix), error: originalConsoleMethods.error.bind(globalConsole, prefix), - } as Display - - // Delegate through the display's own methods (rather than the bound consts) so an override of, - // say, `display.error` is respected by `display.ifDebugEnabled.error` too. - display.ifDebugEnabled = { - debug: (...args) => emitIfDebugEnabled(display.debug, args), - log: (...args) => emitIfDebugEnabled(display.log, args), - info: (...args) => emitIfDebugEnabled(display.info, args), - warn: (...args) => emitIfDebugEnabled(display.warn, args), - error: (...args) => emitIfDebugEnabled(display.error, args), - } - - return display -} - -function emitIfDebugEnabled(method: (...args: any[]) => void, args: any[]) { - if (debugMode) { - method(...args) } } From f8ba9e3bc9687fff5447b35ea297d57fe17ddafb Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 10:44:37 +0200 Subject: [PATCH 14/19] =?UTF-8?q?=F0=9F=90=9B=20align=20js-core=20ESM=20ex?= =?UTF-8?q?ports=20with=20tsdown=20.mjs=20output?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/js-core/monitor/package.json | 2 +- packages/js-core/package.json | 4 ++-- packages/js-core/util/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/js-core/monitor/package.json b/packages/js-core/monitor/package.json index 8a74740e3d..0f2771b3ce 100644 --- a/packages/js-core/monitor/package.json +++ b/packages/js-core/monitor/package.json @@ -1,6 +1,6 @@ { "private": true, "main": "../cjs/entries/monitor.js", - "module": "../esm/entries/monitor.js", + "module": "../esm/entries/monitor.mjs", "types": "../cjs/entries/monitor.d.ts" } diff --git a/packages/js-core/package.json b/packages/js-core/package.json index 21ec612c68..133040bea3 100644 --- a/packages/js-core/package.json +++ b/packages/js-core/package.json @@ -10,12 +10,12 @@ "types": "./cjs/entries/time.d.ts" }, "./monitor": { - "import": "./esm/entries/monitor.js", + "import": "./esm/entries/monitor.mjs", "require": "./cjs/entries/monitor.js", "types": "./cjs/entries/monitor.d.ts" }, "./util": { - "import": "./esm/entries/util.js", + "import": "./esm/entries/util.mjs", "require": "./cjs/entries/util.js", "types": "./cjs/entries/util.d.ts" } diff --git a/packages/js-core/util/package.json b/packages/js-core/util/package.json index 7573e46555..1b9b8144ce 100644 --- a/packages/js-core/util/package.json +++ b/packages/js-core/util/package.json @@ -1,6 +1,6 @@ { "private": true, "main": "../cjs/entries/util.js", - "module": "../esm/entries/util.js", + "module": "../esm/entries/util.mjs", "types": "../cjs/entries/util.d.ts" } From 433ad3a07f4d1ae5df93a9719535cd742a6179ff Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Fri, 12 Jun 2026 15:56:14 +0200 Subject: [PATCH 15/19] =?UTF-8?q?=F0=9F=91=B7=20pin=20rolldown=20to=201.1.?= =?UTF-8?q?1=20to=20fix=20non-deterministic=20ESM=20import=20drop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 + yarn.lock | 906 ++++++++++++++++++++++----------------------------- 2 files changed, 390 insertions(+), 519 deletions(-) diff --git a/package.json b/package.json index 803df68f2d..41210c9eeb 100644 --- a/package.json +++ b/package.json @@ -101,6 +101,9 @@ "webpack-dev-middleware": "8.0.3", "ws": "8.21.0" }, + "resolutions": { + "rolldown": "1.1.1" + }, "volta": { "node": "26.3.0", "yarn": "4.16.0" diff --git a/yarn.lock b/yarn.lock index 31b838a74b..bfbd4402fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,11 +352,11 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:7.3.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": +"@datadog/browser-core@npm:7.2.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": version: 0.0.0-use.local resolution: "@datadog/browser-core@workspace:packages/browser-core" dependencies: - "@datadog/js-core": "npm:0.0.2" + "@datadog/js-core": "npm:0.0.1" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" languageName: unknown @@ -366,8 +366,8 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-debugger@workspace:packages/browser-debugger" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" acorn: "npm:8.16.0" languageName: unknown linkType: soft @@ -376,10 +376,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-logs@workspace:packages/browser-logs" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" peerDependencies: - "@datadog/browser-rum": 7.3.0 + "@datadog/browser-rum": 7.2.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true @@ -395,9 +395,9 @@ __metadata: "@angular/core": "npm:22.0.0" "@angular/platform-browser": "npm:22.0.0" "@angular/router": "npm:22.0.0" - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" rxjs: "npm:7.8.2" peerDependencies: "@angular/core": ">=15 <=22" @@ -406,12 +406,12 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-core@npm:7.3.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": +"@datadog/browser-rum-core@npm:7.2.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": version: 0.0.0-use.local resolution: "@datadog/browser-rum-core@workspace:packages/browser-rum-core" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" ajv: "npm:8.20.0" languageName: unknown linkType: soft @@ -420,14 +420,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nextjs@workspace:packages/browser-rum-nextjs" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/browser-rum-react": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@types/react": "npm:19.2.17" - next: "npm:16.2.7" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-rum-react": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@types/react": "npm:19.2.15" + next: "npm:16.2.6" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" peerDependencies: next: ">=13.0.0" react: ">=18.0.0" @@ -443,9 +443,9 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nuxt@workspace:packages/browser-rum-nuxt" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -466,20 +466,20 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-react@npm:7.3.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": +"@datadog/browser-rum-react@npm:7.2.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": version: 0.0.0-use.local resolution: "@datadog/browser-rum-react@workspace:packages/browser-rum-react" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@tanstack/react-router": "npm:1.170.15" - "@types/react": "npm:19.2.17" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@tanstack/react-router": "npm:1.170.10" + "@types/react": "npm:19.2.15" "@types/react-dom": "npm:19.2.3" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" - react-router: "npm:7.17.0" - react-router-dom: "npm:7.17.0" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" + react-router: "npm:7.16.0" + react-router-dom: "npm:7.16.0" react-router-dom-6: "npm:react-router-dom@6.30.4" peerDependencies: "@tanstack/react-router": ">=1.64.0 <2" @@ -506,10 +506,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-slim@workspace:packages/browser-rum-slim" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" peerDependencies: - "@datadog/browser-logs": 7.3.0 + "@datadog/browser-logs": 7.2.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -520,10 +520,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-vue@workspace:packages/browser-rum-vue" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" - "@vue/test-utils": "npm:2.4.11" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" + "@vue/test-utils": "npm:2.4.10" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -545,14 +545,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum@workspace:packages/browser-rum" dependencies: - "@datadog/browser-core": "npm:7.3.0" - "@datadog/browser-rum-core": "npm:7.3.0" - "@datadog/browser-worker": "npm:7.3.0" - "@datadog/js-core": "npm:0.0.2" + "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-worker": "npm:7.2.0" + "@datadog/js-core": "npm:0.0.1" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" peerDependencies: - "@datadog/browser-logs": 7.3.0 + "@datadog/browser-logs": 7.2.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -567,43 +567,36 @@ __metadata: "@datadog/browser-logs": "workspace:*" "@datadog/browser-rum": "workspace:*" "@datadog/browser-rum-core": "workspace:*" - "@mantine/core": "npm:9.3.0" - "@mantine/hooks": "npm:9.3.0" + "@mantine/core": "npm:9.2.2" + "@mantine/hooks": "npm:9.2.2" "@tabler/icons-react": "npm:3.44.0" - "@types/chrome": "npm:0.1.43" - "@types/react": "npm:19.2.17" + "@types/chrome": "npm:0.1.42" + "@types/react": "npm:19.2.15" "@types/react-dom": "npm:19.2.3" "@wxt-dev/module-react": "npm:1.2.2" clsx: "npm:2.1.1" - react: "npm:19.2.7" - react-dom: "npm:19.2.7" + react: "npm:19.2.6" + react-dom: "npm:19.2.6" typescript: "npm:6.0.3" wxt: "npm:0.20.26" languageName: unknown linkType: soft -"@datadog/browser-worker@npm:7.3.0, @datadog/browser-worker@workspace:packages/browser-worker": +"@datadog/browser-worker@npm:7.2.0, @datadog/browser-worker@workspace:packages/browser-worker": version: 0.0.0-use.local resolution: "@datadog/browser-worker@workspace:packages/browser-worker" dependencies: - "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-core": "npm:7.2.0" webpack: "npm:5.107.2" languageName: unknown linkType: soft -"@datadog/js-core@npm:0.0.2, @datadog/js-core@workspace:packages/js-core": +"@datadog/js-core@npm:0.0.1, @datadog/js-core@workspace:packages/js-core": version: 0.0.0-use.local resolution: "@datadog/js-core@workspace:packages/js-core" languageName: unknown linkType: soft -"@datadog/rum-events-format@DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7": - version: 0.0.0 - resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=02c94b31a2676458a156ed627f3edcd87254beb7" - checksum: 10c0/4a14c1afb23b3e4a0f631f8a1f077d6abab913c82f1145e1585002b488038b00ed19ce16c8840c20c7d94e5d113bc43c48bbb69f46038533cd53d3ebbcbc74c5 - languageName: node - linkType: hard - "@devicefarmer/adbkit-logcat@npm:^2.1.2": version: 2.1.3 resolution: "@devicefarmer/adbkit-logcat@npm:2.1.3" @@ -652,6 +645,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.11.0": + version: 1.11.0 + resolution: "@emnapi/core@npm:1.11.0" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.2" + tslib: "npm:^2.4.0" + checksum: 10c0/268498d6ea42ff1e51d543725c7c9c3ce01d39be19a5790d1587ebe98dcfb9329666f0ce9864bb23e067caa064199a45ec2c63c4050b5e42166c1d7d40750135 + languageName: node + linkType: hard + "@emnapi/runtime@npm:1.10.0": version: 1.10.0 resolution: "@emnapi/runtime@npm:1.10.0" @@ -661,7 +664,7 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.7.0": +"@emnapi/runtime@npm:1.11.0, @emnapi/runtime@npm:^1.7.0": version: 1.11.0 resolution: "@emnapi/runtime@npm:1.11.0" dependencies: @@ -679,6 +682,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/wasi-threads@npm:1.2.2": + version: 1.2.2 + resolution: "@emnapi/wasi-threads@npm:1.2.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f0dc8269d6b20ae5a7c7b36e7a6a333452009d461038ef4febb29da2f3f78c1e2b1576d7e8970a5c5789ed3caedc1f80f5b0c2a5373bdaf8d03b20432bb55747 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.87.0": version: 0.87.0 resolution: "@es-joy/jsdoccomment@npm:0.87.0" @@ -1634,9 +1646,9 @@ __metadata: languageName: node linkType: hard -"@mantine/core@npm:9.3.0": - version: 9.3.0 - resolution: "@mantine/core@npm:9.3.0" +"@mantine/core@npm:9.2.2": + version: 9.2.2 + resolution: "@mantine/core@npm:9.2.2" dependencies: "@floating-ui/react": "npm:^0.27.19" clsx: "npm:^2.1.1" @@ -1644,19 +1656,19 @@ __metadata: react-remove-scroll: "npm:^2.7.2" type-fest: "npm:^5.6.0" peerDependencies: - "@mantine/hooks": 9.3.0 + "@mantine/hooks": 9.2.2 react: ^19.2.0 react-dom: ^19.2.0 - checksum: 10c0/e381a68412a5c7decc4fb124ea0c5a8631f9bbb4fd26e015f97093c164c06101090d040e0fe980f2999eb21b37666a6d6fc70f92655018aa1f406299380c53e8 + checksum: 10c0/7c1f82a5c340eb149e865a45d36703ea71da7d2c8171e7c5f5b368df8b45f241c86eeee9863cb8595536b2ac1bbd4b04d5bd8fcd5ed28321dd9ae2e0f3450d1e languageName: node linkType: hard -"@mantine/hooks@npm:9.3.0": - version: 9.3.0 - resolution: "@mantine/hooks@npm:9.3.0" +"@mantine/hooks@npm:9.2.2": + version: 9.2.2 + resolution: "@mantine/hooks@npm:9.2.2" peerDependencies: react: ^19.2.0 - checksum: 10c0/ed95a2551b34719d43d7b195cf05248498f20add736a2e4ec582b677e5a9efb53b562010df79dc9af7db087e76e9ac42192443c9d03f76963b5dba7dfc2e0a63 + checksum: 10c0/2b8c21bc255a3dfbe97529b06d83fd6eb054e1d14d70ceefa8d656978c42fde4933e32feff01cd92c73a3d8ca64779b0d87c00e55314259b00a42a34f027707c languageName: node linkType: hard @@ -1672,65 +1684,77 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:16.2.7": - version: 16.2.7 - resolution: "@next/env@npm:16.2.7" - checksum: 10c0/d5928d76047ee4f04cf2e5e47fce6c348ee010c7d3105d631e70299bb4ac8d0c53cefbb3415ce0e0e918e89fbcde0817ccac1be220b41cdc4490f989c7d166a7 +"@napi-rs/wasm-runtime@npm:^1.1.5": + version: 1.1.5 + resolution: "@napi-rs/wasm-runtime@npm:1.1.5" + dependencies: + "@tybys/wasm-util": "npm:^0.10.2" + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10c0/727f2b6ae0e68bbe5d39aeb68aa6f183314e9f03dc50bb55a962849535b2db53ecc3fbf1554d8656a54488a608df5a2634670595cf5874dc4af2ee59f817c65d + languageName: node + linkType: hard + +"@next/env@npm:16.2.6": + version: 16.2.6 + resolution: "@next/env@npm:16.2.6" + checksum: 10c0/466722ce30a9561d29c08a7ba78091a47fef3644f422d04751c7124a24457ffe11eb25bb6c59c1e1d57735d9c68c58d185cc19ea58befd7a9c5b81dc05ca550d languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-darwin-arm64@npm:16.2.7" +"@next/swc-darwin-arm64@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-darwin-arm64@npm:16.2.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-darwin-x64@npm:16.2.7" +"@next/swc-darwin-x64@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-darwin-x64@npm:16.2.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-arm64-gnu@npm:16.2.7" +"@next/swc-linux-arm64-gnu@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-arm64-musl@npm:16.2.7" +"@next/swc-linux-arm64-musl@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-x64-gnu@npm:16.2.7" +"@next/swc-linux-x64-gnu@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-linux-x64-musl@npm:16.2.7" +"@next/swc-linux-x64-musl@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-linux-x64-musl@npm:16.2.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-win32-arm64-msvc@npm:16.2.7" +"@next/swc-win32-arm64-msvc@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:16.2.7": - version: 16.2.7 - resolution: "@next/swc-win32-x64-msvc@npm:16.2.7" +"@next/swc-win32-x64-msvc@npm:16.2.6": + version: 16.2.6 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1742,17 +1766,10 @@ __metadata: languageName: node linkType: hard -"@oxc-project/types@npm:=0.133.0": - version: 0.133.0 - resolution: "@oxc-project/types@npm:0.133.0" - checksum: 10c0/70c57ba58644f7ec217b670c301801f4d06995f4ccdba6b2bd106ea3e5ee49d616573e6ef8d55530b87571a960696543687f3850e87ad173d3f88965c30cdd63 - languageName: node - linkType: hard - -"@oxc-project/types@npm:=0.134.0": - version: 0.134.0 - resolution: "@oxc-project/types@npm:0.134.0" - checksum: 10c0/d90ee664206091d539a24de6ec703bdb2124e1181680609ac3c27326273a3189c5bb6e0177f3171c85a78e8c01eb43a9903cbbe13257053c7df141c030579c16 +"@oxc-project/types@npm:=0.135.0": + version: 0.135.0 + resolution: "@oxc-project/types@npm:0.135.0" + checksum: 10c0/7ae7e65fb044733c6016381b27e84868bbf2fcba85f7e2f7dc28caf59cb7303b60b736e709d599a4495e7297aa7183b5e6366f96f2f692455d1b6d225cfe79b4 languageName: node linkType: hard @@ -1841,220 +1858,111 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-android-arm64@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-android-arm64@npm:1.0.3" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-android-arm64@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-android-arm64@npm:1.1.0" +"@rolldown/binding-android-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-android-arm64@npm:1.1.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-darwin-arm64@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-darwin-arm64@npm:1.1.0" +"@rolldown/binding-darwin-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-darwin-arm64@npm:1.1.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rolldown/binding-darwin-x64@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-darwin-x64@npm:1.1.0" +"@rolldown/binding-darwin-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-darwin-x64@npm:1.1.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.3" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@rolldown/binding-freebsd-x64@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-freebsd-x64@npm:1.1.0" +"@rolldown/binding-freebsd-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-freebsd-x64@npm:1.1.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.3" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm-gnueabihf@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.1.0" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.1.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.3" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm64-gnu@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.1.0" +"@rolldown/binding-linux-arm64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.1.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.3" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rolldown/binding-linux-arm64-musl@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.1.0" +"@rolldown/binding-linux-arm64-musl@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.1.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.3" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-ppc64-gnu@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.1.0" +"@rolldown/binding-linux-ppc64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.1.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.3" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-s390x-gnu@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.1.0" +"@rolldown/binding-linux-s390x-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.1.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.3" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rolldown/binding-linux-x64-gnu@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.1.0" +"@rolldown/binding-linux-x64-gnu@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.1.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.3" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rolldown/binding-linux-x64-musl@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.1.0" +"@rolldown/binding-linux-x64-musl@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.1.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.3" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-openharmony-arm64@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.1.0" +"@rolldown/binding-openharmony-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.1.1" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-wasm32-wasi@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.3" - dependencies: - "@emnapi/core": "npm:1.10.0" - "@emnapi/runtime": "npm:1.10.0" - "@napi-rs/wasm-runtime": "npm:^1.1.4" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@rolldown/binding-wasm32-wasi@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.1.0" +"@rolldown/binding-wasm32-wasi@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.1.1" dependencies: - "@emnapi/core": "npm:1.10.0" - "@emnapi/runtime": "npm:1.10.0" - "@napi-rs/wasm-runtime": "npm:^1.1.4" + "@emnapi/core": "npm:1.11.0" + "@emnapi/runtime": "npm:1.11.0" + "@napi-rs/wasm-runtime": "npm:^1.1.5" conditions: cpu=wasm32 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.3" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rolldown/binding-win32-arm64-msvc@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.1.0" +"@rolldown/binding-win32-arm64-msvc@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.1.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.0.3": - version: 1.0.3 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@rolldown/binding-win32-x64-msvc@npm:1.1.0": - version: 1.1.0 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.1.0" +"@rolldown/binding-win32-x64-msvc@npm:1.1.1": + version: 1.1.1 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.1.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2311,18 +2219,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-router@npm:1.170.15": - version: 1.170.15 - resolution: "@tanstack/react-router@npm:1.170.15" +"@tanstack/react-router@npm:1.170.10": + version: 1.170.10 + resolution: "@tanstack/react-router@npm:1.170.10" dependencies: "@tanstack/history": "npm:1.162.0" "@tanstack/react-store": "npm:^0.9.3" - "@tanstack/router-core": "npm:1.171.13" + "@tanstack/router-core": "npm:1.171.8" isbot: "npm:^5.1.22" peerDependencies: react: ">=18.0.0 || >=19.0.0" react-dom: ">=18.0.0 || >=19.0.0" - checksum: 10c0/779cd0278de657925797cf60091f2183eb8ad842a3dd9e98e814de82a67465fdb109422e1fa130a6658daeac4c5efcd5c48918b971665ca976af5be352aba094 + checksum: 10c0/c57bf65625ab3deb5e557bdb1418591bc55eefa0197524deeb737220cbe4d9473dfd0f0b759f97021d2ecd6fd9340a87201933438ab3eb3ee34106419f5a5fad languageName: node linkType: hard @@ -2339,15 +2247,15 @@ __metadata: languageName: node linkType: hard -"@tanstack/router-core@npm:1.171.13": - version: 1.171.13 - resolution: "@tanstack/router-core@npm:1.171.13" +"@tanstack/router-core@npm:1.171.8": + version: 1.171.8 + resolution: "@tanstack/router-core@npm:1.171.8" dependencies: "@tanstack/history": "npm:1.162.0" cookie-es: "npm:^3.0.0" seroval: "npm:^1.5.4" seroval-plugins: "npm:^1.5.4" - checksum: 10c0/10db2af6b64146e5273d0b378f873c518f790d4a20cd597cb783aaf718efc9c600e326b97f068f0892b1c5cb2ac912f68846b6d25f43cc0c97ef240494b55c94 + checksum: 10c0/ff1f894de2cdb4c013ae48f71fc0f6bdfdbdd34d3c927915ac3568279faaa2e51cafb4cac5acc17f6a170e23fe39c01c21e861f468b27c4f3c8f55b3cedfe719 languageName: node linkType: hard @@ -2365,7 +2273,7 @@ __metadata: languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.10.1": +"@tybys/wasm-util@npm:^0.10.1, @tybys/wasm-util@npm:^0.10.2": version: 0.10.2 resolution: "@tybys/wasm-util@npm:0.10.2" dependencies: @@ -2393,13 +2301,13 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:0.1.43": - version: 0.1.43 - resolution: "@types/chrome@npm:0.1.43" +"@types/chrome@npm:0.1.42": + version: 0.1.42 + resolution: "@types/chrome@npm:0.1.42" dependencies: "@types/filesystem": "npm:*" "@types/har-format": "npm:*" - checksum: 10c0/ee9bf6c81b8621f87582ad02e4193a18e94775d6e13bf9012c925101fdc014baba1edf81b0fe220b006d69088b1ac6eb64ac37386c6948ccea4f7dcff5ed5aa2 + checksum: 10c0/3c3ff59c24c6c563ab503c115ffb38e8b1f82aa90d8a3051277e6ad2dc7f5697f4f7fb3063b621e7286360866c789abb1e9079aec70e3bee8fdea2029699a1a5 languageName: node linkType: hard @@ -2548,7 +2456,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:25.9.2, @types/node@npm:>=10.0.0": +"@types/node@npm:*, @types/node@npm:>=10.0.0": version: 25.9.2 resolution: "@types/node@npm:25.9.2" dependencies: @@ -2557,6 +2465,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:25.9.1": + version: 25.9.1 + resolution: "@types/node@npm:25.9.1" + dependencies: + undici-types: "npm:>=7.24.0 <7.24.7" + checksum: 10c0/9a04682842bebbcf21a1779dfeab9aa733d7bd7bbc0a0edb641ab3a9a3d43eac543225acf669c334f458f1956443ebc072bc3c72840c543b8b356cab5c82d456 + languageName: node + linkType: hard + "@types/pako@npm:2.0.4": version: 2.0.4 resolution: "@types/pako@npm:2.0.4" @@ -2587,12 +2504,12 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:19.2.17": - version: 19.2.17 - resolution: "@types/react@npm:19.2.17" +"@types/react@npm:19.2.15": + version: 19.2.15 + resolution: "@types/react@npm:19.2.15" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/bc2c4af96b3e480604424de70d5ebda90c5f4b485df471858c0bc2d7d70364b606ec3c4d8579f94f01aa0c6c0591f56bcf14cba5689f5eea4b74250ccdc3a232 + checksum: 10c0/b554eab715bb14e581f0ae60e5cefe91e1a5e06c31022b543a9806cf224aa056f21e4fb46208e46eb934d86ca0b247ebc82377192a0dead303cb28b8764c6e67 languageName: node linkType: hard @@ -2647,121 +2564,121 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.60.1" +"@typescript-eslint/eslint-plugin@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.60.0" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/type-utils": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/type-utils": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.60.1 + "@typescript-eslint/parser": ^8.60.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/de9f9ab9801970c8c96f342b94661e993e8a66f90a36fc4501a7238585712900a2f1f5c7c805adb1214f98b478a072f0aa590e22dd4ed36231dcabde3f6c7b2f + checksum: 10c0/76dc44d21879a8977d916ab652b86a30e5b69493a0da4ce43ec403442da041320666b5987d6af7d4c9888d52c603e0bb51809b802f98a95d5ee37ca0e8ca5ac3 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/parser@npm:8.60.1" +"@typescript-eslint/parser@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/parser@npm:8.60.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/8bc9ecccac411cda8f6bc38fce2427639071a41f44594b047b40a4a50fd40959797acd373b87ab40e4f4b49e9069d42e1480d91e100800d5fb5e6ec6e4afba71 + checksum: 10c0/1012911e3eca8b3f3a3ca11424c32859ac38b4968bdb4c385c485ce545781da3ad964eceae86177a9aca2cfcbefd03ecf49507d221c7a70918fe0fa6cb8764e7 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/project-service@npm:8.60.1" +"@typescript-eslint/project-service@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/project-service@npm:8.60.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.60.1" - "@typescript-eslint/types": "npm:^8.60.1" + "@typescript-eslint/tsconfig-utils": "npm:^8.60.0" + "@typescript-eslint/types": "npm:^8.60.0" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/f5a61b7f2c90d07b9f89b8d0e4bb5b9a62ab1fc08060b1f6e04793a0ff9bcaa4160afe7662d8027faa7a509cec1354f9178e2e598cae7a66c55a038c70fa0274 + checksum: 10c0/8f72c2f10254787084d19fc73aebd7970bd3f163836c006e5d6997d874a36550d4a6c35b4762a36117be6fa6b84e13268db0a6b572c29b3e7c8c89f25bbb8b65 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/scope-manager@npm:8.60.1" +"@typescript-eslint/scope-manager@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/scope-manager@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" - checksum: 10c0/d9ead95aca27614ccfc160e5487480fc7c0de2e2e07716c5e2a56168f21adfa5124f33f579e7ff0c12896c61b59eb8ce50875c810fec2532a777ead0b103bccd + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" + checksum: 10c0/d64c7c45f9e045fa10905b6703195735b19314f872811e1fd903b6197fb33528a49192ef6ca3183e406601b8d29e8d0096fabfc3e8a99320476e5108d4739f52 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" +"@typescript-eslint/tsconfig-utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c + checksum: 10c0/701eae9a5064c5501e9dccd5a8e0baf365ef9a09da4d523873df303ef139644fad43e3d91b03f9a6ebbb141c0e066fc26ad0c40d5113b7c0d6c9ba69450c2520 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:^8.60.1": - version: 8.61.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.61.0" +"@typescript-eslint/tsconfig-utils@npm:^8.60.0": + version: 8.60.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/b498675f14ef90a5730de7c58388eb2522085a56c3fcad42ad9f89320b96221eafb5b4f9650375f29092025153d03533e3f23ea8f45ce3bc95a57593059edef3 + checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/type-utils@npm:8.60.1" +"@typescript-eslint/type-utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/type-utils@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/916d354fd22a2296abe0c618f89574ba6ed363b841bcbcbb662a53deaccd9bc644f253e7134d12f506d75cb574bbbc3e4113f253045b404e8a17962004e42f1d + checksum: 10c0/2b6d8efe6b8e6f63ecfcca218c255c3f846b78b9567579bec3d16ea97563edebd9d25e7ab3cdf82332c9ded45b7dbfdc1e6540c4503f4716ae8cbd93ab78f605 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.60.1, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4": - version: 8.60.1 - resolution: "@typescript-eslint/types@npm:8.60.1" - checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 +"@typescript-eslint/types@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/types@npm:8.60.0" + checksum: 10c0/d2b6d46081a6521f204fda30e8f03712480b788d80b62b311e0f33764752d3db3bd415dd4e1f8d28495931316da1dfb5ee259e40c5de970367fbaa1efe97223f languageName: node linkType: hard -"@typescript-eslint/types@npm:^8.60.1": - version: 8.61.0 - resolution: "@typescript-eslint/types@npm:8.61.0" - checksum: 10c0/c19407d66fb5ad26e2670cd272bee91d150087d917752422257759e17920220af27cd54593205e9726367a440a237bf8d27ed805cae0b282a79172161f007207 +"@typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4, @typescript-eslint/types@npm:^8.60.0": + version: 8.60.1 + resolution: "@typescript-eslint/types@npm:8.60.1" + checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.60.1" +"@typescript-eslint/typescript-estree@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.60.0" dependencies: - "@typescript-eslint/project-service": "npm:8.60.1" - "@typescript-eslint/tsconfig-utils": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/visitor-keys": "npm:8.60.1" + "@typescript-eslint/project-service": "npm:8.60.0" + "@typescript-eslint/tsconfig-utils": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/visitor-keys": "npm:8.60.0" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -2769,32 +2686,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/76274d3974fd56675df71b010a2b6799a886537625228f89150fcb4563597eb619be4a22937cacacb0bb20b66c11b03e04f913fb6b44790ce63a7d070f27d3aa + checksum: 10c0/9a24a3c47646886cc5c9bd984afdf5974d07033a5743318a4c649f9595d620cc1a409366ecb87beaddb9cd4b32e1fc7fc18c0531bda08eacd78025c3636d6c72 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/utils@npm:8.60.1" +"@typescript-eslint/utils@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/utils@npm:8.60.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.60.1" - "@typescript-eslint/types": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/scope-manager": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/24777b47e23f930df5e0a0858e2979dbc44597d52e7ad237d2d764a433ac214ac00c0f7d0245ce9a54eb31900d261e305dc8a77d31efbb73bd7523c0ab075299 + checksum: 10c0/c1fe25bc90a62d9f67c1dd3a23bf32c2b1d3fc81bfa34cb41e5cadaeaa825c83c7c69a4abc9bc132f1ee39c7e71e367271a16c47573ed621421a2fa2f0e98dd0 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.60.1": - version: 8.60.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.60.1" +"@typescript-eslint/visitor-keys@npm:8.60.0": + version: 8.60.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.60.0" dependencies: - "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.0" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/d9831624c0dde1655a83f3e10b85fe3655ec015fd57cac9295bf3ad302ef30736eb58417b1d9a5c8639a8b05b665f9acc6bcc34f9def386846ae8d6833a5e3ce + checksum: 10c0/5ff775fe5352d359e25ed47ce27d8d61dea7aa9aa4d21a3556a9ee02957673e8d4787ad1d0c325977f47cca56ecdce401417864de0c773b6167053fe36bf9e65 languageName: node linkType: hard @@ -3120,9 +3037,9 @@ __metadata: languageName: node linkType: hard -"@vue/test-utils@npm:2.4.11": - version: 2.4.11 - resolution: "@vue/test-utils@npm:2.4.11" +"@vue/test-utils@npm:2.4.10": + version: 2.4.10 + resolution: "@vue/test-utils@npm:2.4.10" dependencies: js-beautify: "npm:^1.14.9" vue-component-type-helpers: "npm:^3.0.0" @@ -3133,7 +3050,7 @@ __metadata: peerDependenciesMeta: "@vue/server-renderer": optional: true - checksum: 10c0/7e964df1b011de5e0c782f61300ce22d43ccdca5c58dfe07303d700cd1a8e423480b3144076f2a83c241326d25ab383a9e3d3fe51509c7adc3fa276dd465c78b + checksum: 10c0/5dee1a15a4908d1ad82d9940307223214d9fa93e2cdffdc294b72880f73db3e1938bd2f290b096a22b8b8d84db481d4aea7989fcb4c9e5e63ea16896c9a4f4fd languageName: node linkType: hard @@ -3963,20 +3880,19 @@ __metadata: version: 0.0.0-use.local resolution: "browser-sdk@workspace:." dependencies: - "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" - "@types/chrome": "npm:0.1.43" + "@types/chrome": "npm:0.1.42" "@types/cors": "npm:2.8.19" "@types/express": "npm:5.0.6" "@types/jasmine": "npm:3.10.19" - "@types/node": "npm:25.9.2" + "@types/node": "npm:25.9.1" "@types/node-forge": "npm:1.3.14" "@types/ws": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.0" ajv: "npm:8.20.0" browserstack-local: "npm:1.5.13" busboy: "npm:1.6.0" @@ -3987,8 +3903,8 @@ __metadata: eslint-import-resolver-typescript: "npm:4.4.5" eslint-plugin-import-x: "npm:4.16.2" eslint-plugin-jasmine: "npm:4.2.2" - eslint-plugin-jsdoc: "npm:63.0.2" - eslint-plugin-unicorn: "npm:65.0.1" + eslint-plugin-jsdoc: "npm:63.0.1" + eslint-plugin-unicorn: "npm:64.0.0" express: "npm:5.2.1" globals: "npm:17.6.0" html-webpack-plugin: "npm:5.6.7" @@ -4015,8 +3931,8 @@ __metadata: tsdown: "npm:0.22.2" typedoc: "npm:0.28.19" typescript: "npm:6.0.3" - typescript-eslint: "npm:8.60.1" - undici: "npm:8.4.0" + typescript-eslint: "npm:8.60.0" + undici: "npm:8.3.0" webpack: "npm:5.107.2" webpack-cli: "npm:7.0.3" webpack-dev-middleware: "npm:8.0.3" @@ -4335,6 +4251,15 @@ __metadata: languageName: node linkType: hard +"clean-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "clean-regexp@npm:1.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 + languageName: node + linkType: hard + "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -4888,13 +4813,6 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^7.0.2": - version: 7.0.2 - resolution: "detect-indent@npm:7.0.2" - checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b - languageName: node - linkType: hard - "detect-libc@npm:^2.0.3, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -5450,6 +5368,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -5555,9 +5480,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:63.0.2": - version: 63.0.2 - resolution: "eslint-plugin-jsdoc@npm:63.0.2" +"eslint-plugin-jsdoc@npm:63.0.1": + version: 63.0.1 + resolution: "eslint-plugin-jsdoc@npm:63.0.1" dependencies: "@es-joy/jsdoccomment": "npm:~0.87.0" "@es-joy/resolve.exports": "npm:1.2.0" @@ -5570,37 +5495,38 @@ __metadata: html-entities: "npm:^2.6.0" object-deep-merge: "npm:^2.0.1" parse-imports-exports: "npm:^0.2.4" - semver: "npm:^7.8.2" + semver: "npm:^7.8.1" spdx-expression-parse: "npm:^4.0.0" to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/66252ae3fcba03d3c1e438d8b653c873064e8e59b78f8984df64c645681db156db3899ecba058a473cdd158d7a56d8b5ededfddab1a5fc37942d92c1d33a41b6 + checksum: 10c0/a55d147ea935d94465e222e3cfdae1d11ce4e8c7f10ab0b412f3959d24e8fe9c50837e0fdd59b70267ca6ad5c52c6c0fc5fef2b91938e59d7d568bc34b481d35 languageName: node linkType: hard -"eslint-plugin-unicorn@npm:65.0.1": - version: 65.0.1 - resolution: "eslint-plugin-unicorn@npm:65.0.1" +"eslint-plugin-unicorn@npm:64.0.0": + version: 64.0.0 + resolution: "eslint-plugin-unicorn@npm:64.0.0" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" "@eslint-community/eslint-utils": "npm:^4.9.1" change-case: "npm:^5.4.4" ci-info: "npm:^4.4.0" + clean-regexp: "npm:^1.0.0" core-js-compat: "npm:^3.49.0" - detect-indent: "npm:^7.0.2" find-up-simple: "npm:^1.0.1" globals: "npm:^17.4.0" indent-string: "npm:^5.0.0" is-builtin-module: "npm:^5.0.0" jsesc: "npm:^3.1.0" pluralize: "npm:^8.0.0" + regexp-tree: "npm:^0.1.27" regjsparser: "npm:^0.13.0" semver: "npm:^7.7.4" strip-indent: "npm:^4.1.1" peerDependencies: eslint: ">=9.38.0" - checksum: 10c0/17b640a7151911676141ec796cc44616961a80ebd9414f3d2f7666b6877f6e76babf239aa95cc088f126895f795ee91ccc8fe3e14b1bac7a8b33f022686e1a97 + checksum: 10c0/802b556ecaf93fe36217d8bcd9f79b53cc4156bbb75c06f06128a0bd32b2ec94a808dbc5e4c36228895cf6eb0df705337a47b409272ffdc99a40cb08487cb029 languageName: node linkType: hard @@ -8379,19 +8305,19 @@ __metadata: languageName: node linkType: hard -"next@npm:16.2.7": - version: 16.2.7 - resolution: "next@npm:16.2.7" +"next@npm:16.2.6": + version: 16.2.6 + resolution: "next@npm:16.2.6" dependencies: - "@next/env": "npm:16.2.7" - "@next/swc-darwin-arm64": "npm:16.2.7" - "@next/swc-darwin-x64": "npm:16.2.7" - "@next/swc-linux-arm64-gnu": "npm:16.2.7" - "@next/swc-linux-arm64-musl": "npm:16.2.7" - "@next/swc-linux-x64-gnu": "npm:16.2.7" - "@next/swc-linux-x64-musl": "npm:16.2.7" - "@next/swc-win32-arm64-msvc": "npm:16.2.7" - "@next/swc-win32-x64-msvc": "npm:16.2.7" + "@next/env": "npm:16.2.6" + "@next/swc-darwin-arm64": "npm:16.2.6" + "@next/swc-darwin-x64": "npm:16.2.6" + "@next/swc-linux-arm64-gnu": "npm:16.2.6" + "@next/swc-linux-arm64-musl": "npm:16.2.6" + "@next/swc-linux-x64-gnu": "npm:16.2.6" + "@next/swc-linux-x64-musl": "npm:16.2.6" + "@next/swc-win32-arm64-msvc": "npm:16.2.6" + "@next/swc-win32-x64-msvc": "npm:16.2.6" "@swc/helpers": "npm:0.5.15" baseline-browser-mapping: "npm:^2.9.19" caniuse-lite: "npm:^1.0.30001579" @@ -8435,7 +8361,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/11ba48609b3e2e6f380021b3c394c51a9e85a2c4569d19f11be24c7ee1dc5c0d4028e9ef824982043c48e2cb8583b949471153838aec85614a348fb38fb0eff9 + checksum: 10c0/3572071eb0e8051c3b007224dcf642037ce27a2f4b75c45f7e0fe7f2343e98e66604ce8696dde56ecd72963900d330d3a3af0f068f34cfc67520180263effa5f languageName: node linkType: hard @@ -9412,14 +9338,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:19.2.7": - version: 19.2.7 - resolution: "react-dom@npm:19.2.7" +"react-dom@npm:19.2.6": + version: 19.2.6 + resolution: "react-dom@npm:19.2.6" dependencies: scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.2.7 - checksum: 10c0/970ff600f6e80d47d39e2f226f12f226173b3cba3382efc97c5f0cd663de9af38c7a4c11c213fb936094faeac83060d660247accaa96b752180d5b951b9cfecb + react: ^19.2.6 + checksum: 10c0/dbf2aef67857c03a612bc9316a4562e5066f43fa04bf28f7f0734963fc1350da2c9f8eb973930655453281079f30cc8222bab383dbec4b5097084e2c081e3334 languageName: node linkType: hard @@ -9481,15 +9407,15 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:7.17.0": - version: 7.17.0 - resolution: "react-router-dom@npm:7.17.0" +"react-router-dom@npm:7.16.0": + version: 7.16.0 + resolution: "react-router-dom@npm:7.16.0" dependencies: - react-router: "npm:7.17.0" + react-router: "npm:7.16.0" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10c0/60fc4022bccf2fb17b0d8ae8e7c4bda866ca9bf2d45edf0bcbefc854e97fa8971a589b6b77b984a19abecb718faffde357c829d9a22a7913790d608cc7433714 + checksum: 10c0/201b816667e17a5da2b4a45859130efcc36776851ab475cd3538dd5c49b03dbac257e453e0d54ee7c245189bb2cf4fc288b6d01da2282983c03acbf880888a3e languageName: node linkType: hard @@ -9504,9 +9430,9 @@ __metadata: languageName: node linkType: hard -"react-router@npm:7.17.0": - version: 7.17.0 - resolution: "react-router@npm:7.17.0" +"react-router@npm:7.16.0": + version: 7.16.0 + resolution: "react-router@npm:7.16.0" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -9516,7 +9442,7 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10c0/dfa9b0182edba6fab14ef5ac297b292068e71e05bf7e07c6b45fe073d77002089e8e164542364232a8bbb0c7d3ec47b57b78db3984c4383e12308f2d31ad404a + checksum: 10c0/a3d7825c945183dd16f9cb7cf7c16bed859f78cf3049b467d6c9b84bdf0f7357027e821b1f3e187cecfb41e82c0f0bb625432e0ef9aa9d94b778a533204f6b7c languageName: node linkType: hard @@ -9536,10 +9462,10 @@ __metadata: languageName: node linkType: hard -"react@npm:19.2.7": - version: 19.2.7 - resolution: "react@npm:19.2.7" - checksum: 10c0/0bd0e2f1bbd4ba97561c6597bf8a5fec05e6476fe61e165c1065598d16668efc6715205599c94d3ddd49d36cb0f21cbf1b9bcc18ee840b805ce222c3e8d558ac +"react@npm:19.2.6": + version: 19.2.6 + resolution: "react@npm:19.2.6" + checksum: 10c0/66afde33b9a9ee87b1e1cae39d8e7e040d1262e719524fd70660c4d4ce79929c532ac19fc3df5a911edaf02768fdf2c49de4ede1ba99bc6aad72796e0e26e798 languageName: node linkType: hard @@ -9590,6 +9516,15 @@ __metadata: languageName: node linkType: hard +"regexp-tree@npm:^0.1.27": + version: 0.1.27 + resolution: "regexp-tree@npm:0.1.27" + bin: + regexp-tree: bin/regexp-tree + checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c + languageName: node + linkType: hard + "registry-auth-token@npm:^5.0.2": version: 5.1.1 resolution: "registry-auth-token@npm:5.1.1" @@ -9795,84 +9730,26 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:1.0.3": - version: 1.0.3 - resolution: "rolldown@npm:1.0.3" - dependencies: - "@oxc-project/types": "npm:=0.133.0" - "@rolldown/binding-android-arm64": "npm:1.0.3" - "@rolldown/binding-darwin-arm64": "npm:1.0.3" - "@rolldown/binding-darwin-x64": "npm:1.0.3" - "@rolldown/binding-freebsd-x64": "npm:1.0.3" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.3" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.3" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.3" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.3" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.3" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.3" - "@rolldown/binding-linux-x64-musl": "npm:1.0.3" - "@rolldown/binding-openharmony-arm64": "npm:1.0.3" - "@rolldown/binding-wasm32-wasi": "npm:1.0.3" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.3" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.3" - "@rolldown/pluginutils": "npm:^1.0.0" - dependenciesMeta: - "@rolldown/binding-android-arm64": - optional: true - "@rolldown/binding-darwin-arm64": - optional: true - "@rolldown/binding-darwin-x64": - optional: true - "@rolldown/binding-freebsd-x64": - optional: true - "@rolldown/binding-linux-arm-gnueabihf": - optional: true - "@rolldown/binding-linux-arm64-gnu": - optional: true - "@rolldown/binding-linux-arm64-musl": - optional: true - "@rolldown/binding-linux-ppc64-gnu": - optional: true - "@rolldown/binding-linux-s390x-gnu": - optional: true - "@rolldown/binding-linux-x64-gnu": - optional: true - "@rolldown/binding-linux-x64-musl": - optional: true - "@rolldown/binding-openharmony-arm64": - optional: true - "@rolldown/binding-wasm32-wasi": - optional: true - "@rolldown/binding-win32-arm64-msvc": - optional: true - "@rolldown/binding-win32-x64-msvc": - optional: true - bin: - rolldown: ./bin/cli.mjs - checksum: 10c0/5f9dd47b7abf203b16bc600db68542f245e974c800e59ff50b76157d1dada1403657690435b036fabca88e93d13a67c31abe5cfaa6f61ce33717f61720204cdf - languageName: node - linkType: hard - -"rolldown@npm:~1.1.0": - version: 1.1.0 - resolution: "rolldown@npm:1.1.0" - dependencies: - "@oxc-project/types": "npm:=0.134.0" - "@rolldown/binding-android-arm64": "npm:1.1.0" - "@rolldown/binding-darwin-arm64": "npm:1.1.0" - "@rolldown/binding-darwin-x64": "npm:1.1.0" - "@rolldown/binding-freebsd-x64": "npm:1.1.0" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.1.0" - "@rolldown/binding-linux-arm64-gnu": "npm:1.1.0" - "@rolldown/binding-linux-arm64-musl": "npm:1.1.0" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.1.0" - "@rolldown/binding-linux-s390x-gnu": "npm:1.1.0" - "@rolldown/binding-linux-x64-gnu": "npm:1.1.0" - "@rolldown/binding-linux-x64-musl": "npm:1.1.0" - "@rolldown/binding-openharmony-arm64": "npm:1.1.0" - "@rolldown/binding-wasm32-wasi": "npm:1.1.0" - "@rolldown/binding-win32-arm64-msvc": "npm:1.1.0" - "@rolldown/binding-win32-x64-msvc": "npm:1.1.0" +"rolldown@npm:1.1.1": + version: 1.1.1 + resolution: "rolldown@npm:1.1.1" + dependencies: + "@oxc-project/types": "npm:=0.135.0" + "@rolldown/binding-android-arm64": "npm:1.1.1" + "@rolldown/binding-darwin-arm64": "npm:1.1.1" + "@rolldown/binding-darwin-x64": "npm:1.1.1" + "@rolldown/binding-freebsd-x64": "npm:1.1.1" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.1.1" + "@rolldown/binding-linux-arm64-gnu": "npm:1.1.1" + "@rolldown/binding-linux-arm64-musl": "npm:1.1.1" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.1.1" + "@rolldown/binding-linux-s390x-gnu": "npm:1.1.1" + "@rolldown/binding-linux-x64-gnu": "npm:1.1.1" + "@rolldown/binding-linux-x64-musl": "npm:1.1.1" + "@rolldown/binding-openharmony-arm64": "npm:1.1.1" + "@rolldown/binding-wasm32-wasi": "npm:1.1.1" + "@rolldown/binding-win32-arm64-msvc": "npm:1.1.1" + "@rolldown/binding-win32-x64-msvc": "npm:1.1.1" "@rolldown/pluginutils": "npm:^1.0.0" dependenciesMeta: "@rolldown/binding-android-arm64": @@ -9907,7 +9784,7 @@ __metadata: optional: true bin: rolldown: ./bin/cli.mjs - checksum: 10c0/9502a829af6aa274d4b93944f737b5c65b929b39ce67f5fed0f48235b1bf6d0806d54b4e26eb13dff311518afb8b4d60d503e96156cc941c1ed5afed37dac031 + checksum: 10c0/85500de91284b4abbffb3e8c68b2538d9d766ed9482bc4fd59247c8d1eb42d71ef00f44be56642dca298e2ea00b12208dde5478746fbc8777fde05a0720d0e6d languageName: node linkType: hard @@ -10057,15 +9934,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.8.2": - version: 7.8.4 - resolution: "semver@npm:7.8.4" - bin: - semver: bin/semver.js - checksum: 10c0/81b7c296fd7927b80f67fa516b75fa1017caac8167795320de28e76ccbc6f7f01763c30ecd10d6a0d8fd089708ab0548a5aebb94b0870e99c2a2b4600a46389b - languageName: node - linkType: hard - "send@npm:^1.1.0, send@npm:^1.2.0": version: 1.2.1 resolution: "send@npm:1.2.1" @@ -11172,18 +11040,18 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.60.1": - version: 8.60.1 - resolution: "typescript-eslint@npm:8.60.1" +"typescript-eslint@npm:8.60.0": + version: 8.60.0 + resolution: "typescript-eslint@npm:8.60.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.60.1" - "@typescript-eslint/parser": "npm:8.60.1" - "@typescript-eslint/typescript-estree": "npm:8.60.1" - "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/eslint-plugin": "npm:8.60.0" + "@typescript-eslint/parser": "npm:8.60.0" + "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/75a42e14b4a7446dd9ad992422135f696e0af58d7c0f64ff2d9f157f1df7bac6a089fa7a35454d2393eadd329e602c0002c07043bbcf4906f7007e45e783b54e + checksum: 10c0/6968de79ab61b1c56d7233260a3092daf578399117d804c46b34dcedf0317b33cd3025ba34789b8dc4567f30f6d62d0d11691c9dca278173abe91772741ab79d languageName: node linkType: hard @@ -11254,10 +11122,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:8.4.0": - version: 8.4.0 - resolution: "undici@npm:8.4.0" - checksum: 10c0/5ee96ecfd3df955dcd1a368ac3ec68e875bd75e81d5435d6605d2ea24b09f1e54eae675215266ccff8a212d39986630d520e804e29e9f11ba6fd177947477bdd +"undici@npm:8.3.0": + version: 8.3.0 + resolution: "undici@npm:8.3.0" + checksum: 10c0/6a67e46aefc7b882702e76878c4d317040f1ae04aefbab3a3639bcb07b255a050eaf3202ea56b80c42ba5c7140d990cf0096412ca50d6c825a2e1c57c59d1e28 languageName: node linkType: hard From b90799b36a82277b9e3219df2e01a3bd91418677 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Mon, 15 Jun 2026 07:22:27 +0200 Subject: [PATCH 16/19] =?UTF-8?q?=E2=9C=85=20trim=20browser-core=20monitor?= =?UTF-8?q?=20spec=20to=20only=20cover=20browser-specific=20wiring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Core monitor behavior (decorator, wrapper, callMonitored, debug logging) is now tested in @datadog/js-core. This spec is reduced to the two cases unique to the browser-core wrapper: errors are silently swallowed before startMonitorErrorCollection, and reported to the callback after. --- .../browser-core/src/tools/monitor.spec.ts | 160 ++---------------- 1 file changed, 10 insertions(+), 150 deletions(-) diff --git a/packages/browser-core/src/tools/monitor.spec.ts b/packages/browser-core/src/tools/monitor.spec.ts index c79afdf52d..549ddeffd2 100644 --- a/packages/browser-core/src/tools/monitor.spec.ts +++ b/packages/browser-core/src/tools/monitor.spec.ts @@ -1,5 +1,4 @@ -import { display } from './display' -import { callMonitored, monitor, monitored, startMonitorErrorCollection, setDebugMode } from './monitor' +import { callMonitored, monitored, startMonitorErrorCollection } from './monitor' describe('monitor', () => { let onMonitorErrorCollectedSpy: jasmine.Spy<(error: unknown) => void> @@ -8,162 +7,23 @@ describe('monitor', () => { onMonitorErrorCollectedSpy = jasmine.createSpy() }) - describe('decorator', () => { + it('catches monitored errors but does not report them before startMonitorErrorCollection', () => { class Candidate { @monitored - monitoredThrowing() { + throwing() { throw new Error('monitored') } - - @monitored - monitoredStringErrorThrowing() { - // eslint-disable-next-line @typescript-eslint/only-throw-error - throw 'string error' - } - - @monitored - monitoredObjectErrorThrowing() { - // eslint-disable-next-line @typescript-eslint/only-throw-error - throw { foo: 'bar' } - } - - @monitored - monitoredNotThrowing() { - return 1 - } - - notMonitoredThrowing() { - throw new Error('not monitored') - } } - - let candidate: Candidate - beforeEach(() => { - candidate = new Candidate() - }) - - describe('before initialization', () => { - it('catches monitored errors but does not report them (no collection callback yet)', () => { - expect(() => candidate.notMonitoredThrowing()).toThrowError('not monitored') - expect(() => candidate.monitoredThrowing()).not.toThrowError() - expect(candidate.monitoredNotThrowing()).toEqual(1) - }) - }) - - describe('after initialization', () => { - beforeEach(() => { - startMonitorErrorCollection(onMonitorErrorCollectedSpy) - }) - - it('should preserve original behavior', () => { - expect(candidate.monitoredNotThrowing()).toEqual(1) - }) - - it('should catch error', () => { - expect(() => candidate.notMonitoredThrowing()).toThrowError() - expect(() => candidate.monitoredThrowing()).not.toThrowError() - }) - - it('should report error', () => { - candidate.monitoredThrowing() - - expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('monitored')) - }) - - it('should report string error', () => { - candidate.monitoredStringErrorThrowing() - - expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith('string error') - }) - - it('should report object error', () => { - candidate.monitoredObjectErrorThrowing() - - expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith({ foo: 'bar' }) - }) - }) + const candidate = new Candidate() + expect(() => candidate.throwing()).not.toThrowError() + expect(onMonitorErrorCollectedSpy).not.toHaveBeenCalled() }) - describe('function', () => { - const notThrowing = () => 1 - const throwing = () => { + it('reports errors to the collection callback after startMonitorErrorCollection', () => { + startMonitorErrorCollection(onMonitorErrorCollectedSpy) + callMonitored(() => { throw new Error('error') - } - - beforeEach(() => { - startMonitorErrorCollection(onMonitorErrorCollectedSpy) - }) - - describe('direct call', () => { - it('should preserve original behavior', () => { - expect(callMonitored(notThrowing)).toEqual(1) - }) - - it('should catch error', () => { - expect(() => callMonitored(throwing)).not.toThrowError() - }) - - it('should report error', () => { - callMonitored(throwing) - - expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('error')) - }) - }) - - describe('wrapper', () => { - it('should preserve original behavior', () => { - const decorated = monitor(notThrowing) - expect(decorated()).toEqual(1) - }) - - it('should catch error', () => { - const decorated = monitor(throwing) - expect(() => decorated()).not.toThrowError() - }) - - it('should report error', () => { - monitor(throwing)() - - expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('error')) - }) - }) - }) - - describe('setDebugMode', () => { - let displaySpy: jasmine.Spy - - beforeEach(() => { - displaySpy = spyOn(display, 'error') - }) - - it('when not called, should not display error', () => { - callMonitored(() => { - throw new Error('message') - }) - - expect(displaySpy).not.toHaveBeenCalled() - }) - - it('when called, should display error', () => { - setDebugMode(true) - - callMonitored(() => { - throw new Error('message') - }) - - expect(displaySpy).toHaveBeenCalledOnceWith('[MONITOR]', new Error('message')) - }) - - it('displays errors thrown by the onMonitorErrorCollected callback', () => { - setDebugMode(true) - onMonitorErrorCollectedSpy.and.throwError(new Error('unexpected')) - startMonitorErrorCollection(onMonitorErrorCollectedSpy) - - callMonitored(() => { - throw new Error('message') - }) - expect(displaySpy).toHaveBeenCalledWith('[MONITOR]', new Error('message')) - expect(displaySpy).toHaveBeenCalledWith('[MONITOR]', new Error('unexpected')) }) + expect(onMonitorErrorCollectedSpy).toHaveBeenCalledOnceWith(new Error('error')) }) }) From 79804831a09c82870c90cc458ef206b4a41d9289 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Mon, 15 Jun 2026 15:19:32 +0200 Subject: [PATCH 17/19] =?UTF-8?q?=F0=9F=91=B7=20update=20yarn.lock=20works?= =?UTF-8?q?pace=20references=20to=207.3.0=20and=20js-core=200.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sync workspace dependency version references in yarn.lock - Matches the version bumps from packages/browser-core and js-core --- yarn.lock | 551 ++++++++++++++++++++++++++---------------------------- 1 file changed, 270 insertions(+), 281 deletions(-) diff --git a/yarn.lock b/yarn.lock index bfbd4402fd..b3133319ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,11 +352,11 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:7.2.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": +"@datadog/browser-core@npm:7.3.0, @datadog/browser-core@workspace:*, @datadog/browser-core@workspace:packages/browser-core": version: 0.0.0-use.local resolution: "@datadog/browser-core@workspace:packages/browser-core" dependencies: - "@datadog/js-core": "npm:0.0.1" + "@datadog/js-core": "npm:0.0.2" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" languageName: unknown @@ -366,8 +366,8 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-debugger@workspace:packages/browser-debugger" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" acorn: "npm:8.16.0" languageName: unknown linkType: soft @@ -376,10 +376,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-logs@workspace:packages/browser-logs" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" peerDependencies: - "@datadog/browser-rum": 7.2.0 + "@datadog/browser-rum": 7.3.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true @@ -395,9 +395,9 @@ __metadata: "@angular/core": "npm:22.0.0" "@angular/platform-browser": "npm:22.0.0" "@angular/router": "npm:22.0.0" - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" rxjs: "npm:7.8.2" peerDependencies: "@angular/core": ">=15 <=22" @@ -406,12 +406,12 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-core@npm:7.2.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": +"@datadog/browser-rum-core@npm:7.3.0, @datadog/browser-rum-core@workspace:*, @datadog/browser-rum-core@workspace:packages/browser-rum-core": version: 0.0.0-use.local resolution: "@datadog/browser-rum-core@workspace:packages/browser-rum-core" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" ajv: "npm:8.20.0" languageName: unknown linkType: soft @@ -420,14 +420,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nextjs@workspace:packages/browser-rum-nextjs" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/browser-rum-react": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@types/react": "npm:19.2.15" - next: "npm:16.2.6" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/browser-rum-react": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@types/react": "npm:19.2.17" + next: "npm:16.2.7" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" peerDependencies: next: ">=13.0.0" react: ">=18.0.0" @@ -443,9 +443,9 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-nuxt@workspace:packages/browser-rum-nuxt" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -466,20 +466,20 @@ __metadata: languageName: unknown linkType: soft -"@datadog/browser-rum-react@npm:7.2.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": +"@datadog/browser-rum-react@npm:7.3.0, @datadog/browser-rum-react@workspace:packages/browser-rum-react": version: 0.0.0-use.local resolution: "@datadog/browser-rum-react@workspace:packages/browser-rum-react" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@tanstack/react-router": "npm:1.170.10" - "@types/react": "npm:19.2.15" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@tanstack/react-router": "npm:1.170.15" + "@types/react": "npm:19.2.17" "@types/react-dom": "npm:19.2.3" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" - react-router: "npm:7.16.0" - react-router-dom: "npm:7.16.0" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" + react-router: "npm:7.17.0" + react-router-dom: "npm:7.17.0" react-router-dom-6: "npm:react-router-dom@6.30.4" peerDependencies: "@tanstack/react-router": ">=1.64.0 <2" @@ -506,10 +506,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-slim@workspace:packages/browser-rum-slim" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" peerDependencies: - "@datadog/browser-logs": 7.2.0 + "@datadog/browser-logs": 7.3.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -520,10 +520,10 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum-vue@workspace:packages/browser-rum-vue" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" - "@vue/test-utils": "npm:2.4.10" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" + "@vue/test-utils": "npm:2.4.11" vue: "npm:3.5.35" vue-router: "npm:5.1.0" peerDependencies: @@ -545,14 +545,14 @@ __metadata: version: 0.0.0-use.local resolution: "@datadog/browser-rum@workspace:packages/browser-rum" dependencies: - "@datadog/browser-core": "npm:7.2.0" - "@datadog/browser-rum-core": "npm:7.2.0" - "@datadog/browser-worker": "npm:7.2.0" - "@datadog/js-core": "npm:0.0.1" + "@datadog/browser-core": "npm:7.3.0" + "@datadog/browser-rum-core": "npm:7.3.0" + "@datadog/browser-worker": "npm:7.3.0" + "@datadog/js-core": "npm:0.0.2" "@types/pako": "npm:2.0.4" pako: "npm:2.1.0" peerDependencies: - "@datadog/browser-logs": 7.2.0 + "@datadog/browser-logs": 7.3.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true @@ -567,36 +567,43 @@ __metadata: "@datadog/browser-logs": "workspace:*" "@datadog/browser-rum": "workspace:*" "@datadog/browser-rum-core": "workspace:*" - "@mantine/core": "npm:9.2.2" - "@mantine/hooks": "npm:9.2.2" + "@mantine/core": "npm:9.3.0" + "@mantine/hooks": "npm:9.3.0" "@tabler/icons-react": "npm:3.44.0" - "@types/chrome": "npm:0.1.42" - "@types/react": "npm:19.2.15" + "@types/chrome": "npm:0.1.43" + "@types/react": "npm:19.2.17" "@types/react-dom": "npm:19.2.3" "@wxt-dev/module-react": "npm:1.2.2" clsx: "npm:2.1.1" - react: "npm:19.2.6" - react-dom: "npm:19.2.6" + react: "npm:19.2.7" + react-dom: "npm:19.2.7" typescript: "npm:6.0.3" wxt: "npm:0.20.26" languageName: unknown linkType: soft -"@datadog/browser-worker@npm:7.2.0, @datadog/browser-worker@workspace:packages/browser-worker": +"@datadog/browser-worker@npm:7.3.0, @datadog/browser-worker@workspace:packages/browser-worker": version: 0.0.0-use.local resolution: "@datadog/browser-worker@workspace:packages/browser-worker" dependencies: - "@datadog/browser-core": "npm:7.2.0" + "@datadog/browser-core": "npm:7.3.0" webpack: "npm:5.107.2" languageName: unknown linkType: soft -"@datadog/js-core@npm:0.0.1, @datadog/js-core@workspace:packages/js-core": +"@datadog/js-core@npm:0.0.2, @datadog/js-core@workspace:packages/js-core": version: 0.0.0-use.local resolution: "@datadog/js-core@workspace:packages/js-core" languageName: unknown linkType: soft +"@datadog/rum-events-format@DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7": + version: 0.0.0 + resolution: "@datadog/rum-events-format@https://github.com/DataDog/rum-events-format.git#commit=02c94b31a2676458a156ed627f3edcd87254beb7" + checksum: 10c0/4a14c1afb23b3e4a0f631f8a1f077d6abab913c82f1145e1585002b488038b00ed19ce16c8840c20c7d94e5d113bc43c48bbb69f46038533cd53d3ebbcbc74c5 + languageName: node + linkType: hard + "@devicefarmer/adbkit-logcat@npm:^2.1.2": version: 2.1.3 resolution: "@devicefarmer/adbkit-logcat@npm:2.1.3" @@ -1646,9 +1653,9 @@ __metadata: languageName: node linkType: hard -"@mantine/core@npm:9.2.2": - version: 9.2.2 - resolution: "@mantine/core@npm:9.2.2" +"@mantine/core@npm:9.3.0": + version: 9.3.0 + resolution: "@mantine/core@npm:9.3.0" dependencies: "@floating-ui/react": "npm:^0.27.19" clsx: "npm:^2.1.1" @@ -1656,19 +1663,19 @@ __metadata: react-remove-scroll: "npm:^2.7.2" type-fest: "npm:^5.6.0" peerDependencies: - "@mantine/hooks": 9.2.2 + "@mantine/hooks": 9.3.0 react: ^19.2.0 react-dom: ^19.2.0 - checksum: 10c0/7c1f82a5c340eb149e865a45d36703ea71da7d2c8171e7c5f5b368df8b45f241c86eeee9863cb8595536b2ac1bbd4b04d5bd8fcd5ed28321dd9ae2e0f3450d1e + checksum: 10c0/e381a68412a5c7decc4fb124ea0c5a8631f9bbb4fd26e015f97093c164c06101090d040e0fe980f2999eb21b37666a6d6fc70f92655018aa1f406299380c53e8 languageName: node linkType: hard -"@mantine/hooks@npm:9.2.2": - version: 9.2.2 - resolution: "@mantine/hooks@npm:9.2.2" +"@mantine/hooks@npm:9.3.0": + version: 9.3.0 + resolution: "@mantine/hooks@npm:9.3.0" peerDependencies: react: ^19.2.0 - checksum: 10c0/2b8c21bc255a3dfbe97529b06d83fd6eb054e1d14d70ceefa8d656978c42fde4933e32feff01cd92c73a3d8ca64779b0d87c00e55314259b00a42a34f027707c + checksum: 10c0/ed95a2551b34719d43d7b195cf05248498f20add736a2e4ec582b677e5a9efb53b562010df79dc9af7db087e76e9ac42192443c9d03f76963b5dba7dfc2e0a63 languageName: node linkType: hard @@ -1696,65 +1703,65 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:16.2.6": - version: 16.2.6 - resolution: "@next/env@npm:16.2.6" - checksum: 10c0/466722ce30a9561d29c08a7ba78091a47fef3644f422d04751c7124a24457ffe11eb25bb6c59c1e1d57735d9c68c58d185cc19ea58befd7a9c5b81dc05ca550d +"@next/env@npm:16.2.7": + version: 16.2.7 + resolution: "@next/env@npm:16.2.7" + checksum: 10c0/d5928d76047ee4f04cf2e5e47fce6c348ee010c7d3105d631e70299bb4ac8d0c53cefbb3415ce0e0e918e89fbcde0817ccac1be220b41cdc4490f989c7d166a7 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-darwin-arm64@npm:16.2.6" +"@next/swc-darwin-arm64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-arm64@npm:16.2.7" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-darwin-x64@npm:16.2.6" +"@next/swc-darwin-x64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-x64@npm:16.2.7" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-arm64-gnu@npm:16.2.6" +"@next/swc-linux-arm64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-arm64-musl@npm:16.2.6" +"@next/swc-linux-arm64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-x64-gnu@npm:16.2.6" +"@next/swc-linux-x64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-linux-x64-musl@npm:16.2.6" +"@next/swc-linux-x64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-musl@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-win32-arm64-msvc@npm:16.2.6" +"@next/swc-win32-arm64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.7" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:16.2.6": - version: 16.2.6 - resolution: "@next/swc-win32-x64-msvc@npm:16.2.6" +"@next/swc-win32-x64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.7" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2219,18 +2226,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-router@npm:1.170.10": - version: 1.170.10 - resolution: "@tanstack/react-router@npm:1.170.10" +"@tanstack/react-router@npm:1.170.15": + version: 1.170.15 + resolution: "@tanstack/react-router@npm:1.170.15" dependencies: "@tanstack/history": "npm:1.162.0" "@tanstack/react-store": "npm:^0.9.3" - "@tanstack/router-core": "npm:1.171.8" + "@tanstack/router-core": "npm:1.171.13" isbot: "npm:^5.1.22" peerDependencies: react: ">=18.0.0 || >=19.0.0" react-dom: ">=18.0.0 || >=19.0.0" - checksum: 10c0/c57bf65625ab3deb5e557bdb1418591bc55eefa0197524deeb737220cbe4d9473dfd0f0b759f97021d2ecd6fd9340a87201933438ab3eb3ee34106419f5a5fad + checksum: 10c0/779cd0278de657925797cf60091f2183eb8ad842a3dd9e98e814de82a67465fdb109422e1fa130a6658daeac4c5efcd5c48918b971665ca976af5be352aba094 languageName: node linkType: hard @@ -2247,15 +2254,15 @@ __metadata: languageName: node linkType: hard -"@tanstack/router-core@npm:1.171.8": - version: 1.171.8 - resolution: "@tanstack/router-core@npm:1.171.8" +"@tanstack/router-core@npm:1.171.13": + version: 1.171.13 + resolution: "@tanstack/router-core@npm:1.171.13" dependencies: "@tanstack/history": "npm:1.162.0" cookie-es: "npm:^3.0.0" seroval: "npm:^1.5.4" seroval-plugins: "npm:^1.5.4" - checksum: 10c0/ff1f894de2cdb4c013ae48f71fc0f6bdfdbdd34d3c927915ac3568279faaa2e51cafb4cac5acc17f6a170e23fe39c01c21e861f468b27c4f3c8f55b3cedfe719 + checksum: 10c0/10db2af6b64146e5273d0b378f873c518f790d4a20cd597cb783aaf718efc9c600e326b97f068f0892b1c5cb2ac912f68846b6d25f43cc0c97ef240494b55c94 languageName: node linkType: hard @@ -2301,13 +2308,13 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:0.1.42": - version: 0.1.42 - resolution: "@types/chrome@npm:0.1.42" +"@types/chrome@npm:0.1.43": + version: 0.1.43 + resolution: "@types/chrome@npm:0.1.43" dependencies: "@types/filesystem": "npm:*" "@types/har-format": "npm:*" - checksum: 10c0/3c3ff59c24c6c563ab503c115ffb38e8b1f82aa90d8a3051277e6ad2dc7f5697f4f7fb3063b621e7286360866c789abb1e9079aec70e3bee8fdea2029699a1a5 + checksum: 10c0/ee9bf6c81b8621f87582ad02e4193a18e94775d6e13bf9012c925101fdc014baba1edf81b0fe220b006d69088b1ac6eb64ac37386c6948ccea4f7dcff5ed5aa2 languageName: node linkType: hard @@ -2456,7 +2463,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=10.0.0": +"@types/node@npm:*, @types/node@npm:25.9.2, @types/node@npm:>=10.0.0": version: 25.9.2 resolution: "@types/node@npm:25.9.2" dependencies: @@ -2465,15 +2472,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:25.9.1": - version: 25.9.1 - resolution: "@types/node@npm:25.9.1" - dependencies: - undici-types: "npm:>=7.24.0 <7.24.7" - checksum: 10c0/9a04682842bebbcf21a1779dfeab9aa733d7bd7bbc0a0edb641ab3a9a3d43eac543225acf669c334f458f1956443ebc072bc3c72840c543b8b356cab5c82d456 - languageName: node - linkType: hard - "@types/pako@npm:2.0.4": version: 2.0.4 resolution: "@types/pako@npm:2.0.4" @@ -2504,12 +2502,12 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:19.2.15": - version: 19.2.15 - resolution: "@types/react@npm:19.2.15" +"@types/react@npm:19.2.17": + version: 19.2.17 + resolution: "@types/react@npm:19.2.17" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/b554eab715bb14e581f0ae60e5cefe91e1a5e06c31022b543a9806cf224aa056f21e4fb46208e46eb934d86ca0b247ebc82377192a0dead303cb28b8764c6e67 + checksum: 10c0/bc2c4af96b3e480604424de70d5ebda90c5f4b485df471858c0bc2d7d70364b606ec3c4d8579f94f01aa0c6c0591f56bcf14cba5689f5eea4b74250ccdc3a232 languageName: node linkType: hard @@ -2564,121 +2562,121 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.60.0" +"@typescript-eslint/eslint-plugin@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.60.1" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/type-utils": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/type-utils": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.5.0" peerDependencies: - "@typescript-eslint/parser": ^8.60.0 + "@typescript-eslint/parser": ^8.60.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/76dc44d21879a8977d916ab652b86a30e5b69493a0da4ce43ec403442da041320666b5987d6af7d4c9888d52c603e0bb51809b802f98a95d5ee37ca0e8ca5ac3 + checksum: 10c0/de9f9ab9801970c8c96f342b94661e993e8a66f90a36fc4501a7238585712900a2f1f5c7c805adb1214f98b478a072f0aa590e22dd4ed36231dcabde3f6c7b2f languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/parser@npm:8.60.0" +"@typescript-eslint/parser@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/parser@npm:8.60.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/1012911e3eca8b3f3a3ca11424c32859ac38b4968bdb4c385c485ce545781da3ad964eceae86177a9aca2cfcbefd03ecf49507d221c7a70918fe0fa6cb8764e7 + checksum: 10c0/8bc9ecccac411cda8f6bc38fce2427639071a41f44594b047b40a4a50fd40959797acd373b87ab40e4f4b49e9069d42e1480d91e100800d5fb5e6ec6e4afba71 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/project-service@npm:8.60.0" +"@typescript-eslint/project-service@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/project-service@npm:8.60.1" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.60.0" - "@typescript-eslint/types": "npm:^8.60.0" + "@typescript-eslint/tsconfig-utils": "npm:^8.60.1" + "@typescript-eslint/types": "npm:^8.60.1" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/8f72c2f10254787084d19fc73aebd7970bd3f163836c006e5d6997d874a36550d4a6c35b4762a36117be6fa6b84e13268db0a6b572c29b3e7c8c89f25bbb8b65 + checksum: 10c0/f5a61b7f2c90d07b9f89b8d0e4bb5b9a62ab1fc08060b1f6e04793a0ff9bcaa4160afe7662d8027faa7a509cec1354f9178e2e598cae7a66c55a038c70fa0274 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/scope-manager@npm:8.60.0" +"@typescript-eslint/scope-manager@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/scope-manager@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" - checksum: 10c0/d64c7c45f9e045fa10905b6703195735b19314f872811e1fd903b6197fb33528a49192ef6ca3183e406601b8d29e8d0096fabfc3e8a99320476e5108d4739f52 + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" + checksum: 10c0/d9ead95aca27614ccfc160e5487480fc7c0de2e2e07716c5e2a56168f21adfa5124f33f579e7ff0c12896c61b59eb8ce50875c810fec2532a777ead0b103bccd languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.0" +"@typescript-eslint/tsconfig-utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/701eae9a5064c5501e9dccd5a8e0baf365ef9a09da4d523873df303ef139644fad43e3d91b03f9a6ebbb141c0e066fc26ad0c40d5113b7c0d6c9ba69450c2520 + checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:^8.60.0": - version: 8.60.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.60.1" +"@typescript-eslint/tsconfig-utils@npm:^8.60.1": + version: 8.61.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.61.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/231d6c6ef0b305d5b007ce89af11c5871c14a5e3be43d1c131100f60053783169c1ce3133af767b8874bce6cc20ece1d2501c2ef315f467ecdc04e8acdd0dc9c + checksum: 10c0/b498675f14ef90a5730de7c58388eb2522085a56c3fcad42ad9f89320b96221eafb5b4f9650375f29092025153d03533e3f23ea8f45ce3bc95a57593059edef3 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/type-utils@npm:8.60.0" +"@typescript-eslint/type-utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/type-utils@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.5.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/2b6d8efe6b8e6f63ecfcca218c255c3f846b78b9567579bec3d16ea97563edebd9d25e7ab3cdf82332c9ded45b7dbfdc1e6540c4503f4716ae8cbd93ab78f605 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/types@npm:8.60.0" - checksum: 10c0/d2b6d46081a6521f204fda30e8f03712480b788d80b62b311e0f33764752d3db3bd415dd4e1f8d28495931316da1dfb5ee259e40c5de970367fbaa1efe97223f + checksum: 10c0/916d354fd22a2296abe0c618f89574ba6ed363b841bcbcbb662a53deaccd9bc644f253e7134d12f506d75cb574bbbc3e4113f253045b404e8a17962004e42f1d languageName: node linkType: hard -"@typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4, @typescript-eslint/types@npm:^8.60.0": +"@typescript-eslint/types@npm:8.60.1, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.59.4": version: 8.60.1 resolution: "@typescript-eslint/types@npm:8.60.1" checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.60.0" +"@typescript-eslint/types@npm:^8.60.1": + version: 8.61.0 + resolution: "@typescript-eslint/types@npm:8.61.0" + checksum: 10c0/c19407d66fb5ad26e2670cd272bee91d150087d917752422257759e17920220af27cd54593205e9726367a440a237bf8d27ed805cae0b282a79172161f007207 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.60.1" dependencies: - "@typescript-eslint/project-service": "npm:8.60.0" - "@typescript-eslint/tsconfig-utils": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/visitor-keys": "npm:8.60.0" + "@typescript-eslint/project-service": "npm:8.60.1" + "@typescript-eslint/tsconfig-utils": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/visitor-keys": "npm:8.60.1" debug: "npm:^4.4.3" minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" @@ -2686,32 +2684,32 @@ __metadata: ts-api-utils: "npm:^2.5.0" peerDependencies: typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/9a24a3c47646886cc5c9bd984afdf5974d07033a5743318a4c649f9595d620cc1a409366ecb87beaddb9cd4b32e1fc7fc18c0531bda08eacd78025c3636d6c72 + checksum: 10c0/76274d3974fd56675df71b010a2b6799a886537625228f89150fcb4563597eb619be4a22937cacacb0bb20b66c11b03e04f913fb6b44790ce63a7d070f27d3aa languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/utils@npm:8.60.0" +"@typescript-eslint/utils@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/utils@npm:8.60.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.60.0" - "@typescript-eslint/types": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" + "@typescript-eslint/scope-manager": "npm:8.60.1" + "@typescript-eslint/types": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/c1fe25bc90a62d9f67c1dd3a23bf32c2b1d3fc81bfa34cb41e5cadaeaa825c83c7c69a4abc9bc132f1ee39c7e71e367271a16c47573ed621421a2fa2f0e98dd0 + checksum: 10c0/24777b47e23f930df5e0a0858e2979dbc44597d52e7ad237d2d764a433ac214ac00c0f7d0245ce9a54eb31900d261e305dc8a77d31efbb73bd7523c0ab075299 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.60.0": - version: 8.60.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.60.0" +"@typescript-eslint/visitor-keys@npm:8.60.1": + version: 8.60.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.60.1" dependencies: - "@typescript-eslint/types": "npm:8.60.0" + "@typescript-eslint/types": "npm:8.60.1" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/5ff775fe5352d359e25ed47ce27d8d61dea7aa9aa4d21a3556a9ee02957673e8d4787ad1d0c325977f47cca56ecdce401417864de0c773b6167053fe36bf9e65 + checksum: 10c0/d9831624c0dde1655a83f3e10b85fe3655ec015fd57cac9295bf3ad302ef30736eb58417b1d9a5c8639a8b05b665f9acc6bcc34f9def386846ae8d6833a5e3ce languageName: node linkType: hard @@ -3037,9 +3035,9 @@ __metadata: languageName: node linkType: hard -"@vue/test-utils@npm:2.4.10": - version: 2.4.10 - resolution: "@vue/test-utils@npm:2.4.10" +"@vue/test-utils@npm:2.4.11": + version: 2.4.11 + resolution: "@vue/test-utils@npm:2.4.11" dependencies: js-beautify: "npm:^1.14.9" vue-component-type-helpers: "npm:^3.0.0" @@ -3050,7 +3048,7 @@ __metadata: peerDependenciesMeta: "@vue/server-renderer": optional: true - checksum: 10c0/5dee1a15a4908d1ad82d9940307223214d9fa93e2cdffdc294b72880f73db3e1938bd2f290b096a22b8b8d84db481d4aea7989fcb4c9e5e63ea16896c9a4f4fd + checksum: 10c0/7e964df1b011de5e0c782f61300ce22d43ccdca5c58dfe07303d700cd1a8e423480b3144076f2a83c241326d25ab383a9e3d3fe51509c7adc3fa276dd465c78b languageName: node linkType: hard @@ -3880,19 +3878,20 @@ __metadata: version: 0.0.0-use.local resolution: "browser-sdk@workspace:." dependencies: + "@datadog/rum-events-format": "DataDog/rum-events-format#commit=02c94b31a2676458a156ed627f3edcd87254beb7" "@eslint/js": "npm:10.0.1" "@jsdevtools/coverage-istanbul-loader": "npm:3.0.5" "@playwright/test": "npm:1.60.0" "@swc/core": "npm:1.15.40" "@types/busboy": "npm:1.5.4" - "@types/chrome": "npm:0.1.42" + "@types/chrome": "npm:0.1.43" "@types/cors": "npm:2.8.19" "@types/express": "npm:5.0.6" "@types/jasmine": "npm:3.10.19" - "@types/node": "npm:25.9.1" + "@types/node": "npm:25.9.2" "@types/node-forge": "npm:1.3.14" "@types/ws": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/utils": "npm:8.60.1" ajv: "npm:8.20.0" browserstack-local: "npm:1.5.13" busboy: "npm:1.6.0" @@ -3903,8 +3902,8 @@ __metadata: eslint-import-resolver-typescript: "npm:4.4.5" eslint-plugin-import-x: "npm:4.16.2" eslint-plugin-jasmine: "npm:4.2.2" - eslint-plugin-jsdoc: "npm:63.0.1" - eslint-plugin-unicorn: "npm:64.0.0" + eslint-plugin-jsdoc: "npm:63.0.2" + eslint-plugin-unicorn: "npm:65.0.1" express: "npm:5.2.1" globals: "npm:17.6.0" html-webpack-plugin: "npm:5.6.7" @@ -3931,8 +3930,8 @@ __metadata: tsdown: "npm:0.22.2" typedoc: "npm:0.28.19" typescript: "npm:6.0.3" - typescript-eslint: "npm:8.60.0" - undici: "npm:8.3.0" + typescript-eslint: "npm:8.60.1" + undici: "npm:8.4.0" webpack: "npm:5.107.2" webpack-cli: "npm:7.0.3" webpack-dev-middleware: "npm:8.0.3" @@ -4251,15 +4250,6 @@ __metadata: languageName: node linkType: hard -"clean-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-regexp@npm:1.0.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 - languageName: node - linkType: hard - "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -4813,6 +4803,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^7.0.2": + version: 7.0.2 + resolution: "detect-indent@npm:7.0.2" + checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b + languageName: node + linkType: hard + "detect-libc@npm:^2.0.3, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -5368,13 +5365,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -5480,9 +5470,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:63.0.1": - version: 63.0.1 - resolution: "eslint-plugin-jsdoc@npm:63.0.1" +"eslint-plugin-jsdoc@npm:63.0.2": + version: 63.0.2 + resolution: "eslint-plugin-jsdoc@npm:63.0.2" dependencies: "@es-joy/jsdoccomment": "npm:~0.87.0" "@es-joy/resolve.exports": "npm:1.2.0" @@ -5495,38 +5485,37 @@ __metadata: html-entities: "npm:^2.6.0" object-deep-merge: "npm:^2.0.1" parse-imports-exports: "npm:^0.2.4" - semver: "npm:^7.8.1" + semver: "npm:^7.8.2" spdx-expression-parse: "npm:^4.0.0" to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/a55d147ea935d94465e222e3cfdae1d11ce4e8c7f10ab0b412f3959d24e8fe9c50837e0fdd59b70267ca6ad5c52c6c0fc5fef2b91938e59d7d568bc34b481d35 + checksum: 10c0/66252ae3fcba03d3c1e438d8b653c873064e8e59b78f8984df64c645681db156db3899ecba058a473cdd158d7a56d8b5ededfddab1a5fc37942d92c1d33a41b6 languageName: node linkType: hard -"eslint-plugin-unicorn@npm:64.0.0": - version: 64.0.0 - resolution: "eslint-plugin-unicorn@npm:64.0.0" +"eslint-plugin-unicorn@npm:65.0.1": + version: 65.0.1 + resolution: "eslint-plugin-unicorn@npm:65.0.1" dependencies: "@babel/helper-validator-identifier": "npm:^7.28.5" "@eslint-community/eslint-utils": "npm:^4.9.1" change-case: "npm:^5.4.4" ci-info: "npm:^4.4.0" - clean-regexp: "npm:^1.0.0" core-js-compat: "npm:^3.49.0" + detect-indent: "npm:^7.0.2" find-up-simple: "npm:^1.0.1" globals: "npm:^17.4.0" indent-string: "npm:^5.0.0" is-builtin-module: "npm:^5.0.0" jsesc: "npm:^3.1.0" pluralize: "npm:^8.0.0" - regexp-tree: "npm:^0.1.27" regjsparser: "npm:^0.13.0" semver: "npm:^7.7.4" strip-indent: "npm:^4.1.1" peerDependencies: eslint: ">=9.38.0" - checksum: 10c0/802b556ecaf93fe36217d8bcd9f79b53cc4156bbb75c06f06128a0bd32b2ec94a808dbc5e4c36228895cf6eb0df705337a47b409272ffdc99a40cb08487cb029 + checksum: 10c0/17b640a7151911676141ec796cc44616961a80ebd9414f3d2f7666b6877f6e76babf239aa95cc088f126895f795ee91ccc8fe3e14b1bac7a8b33f022686e1a97 languageName: node linkType: hard @@ -8305,19 +8294,19 @@ __metadata: languageName: node linkType: hard -"next@npm:16.2.6": - version: 16.2.6 - resolution: "next@npm:16.2.6" +"next@npm:16.2.7": + version: 16.2.7 + resolution: "next@npm:16.2.7" dependencies: - "@next/env": "npm:16.2.6" - "@next/swc-darwin-arm64": "npm:16.2.6" - "@next/swc-darwin-x64": "npm:16.2.6" - "@next/swc-linux-arm64-gnu": "npm:16.2.6" - "@next/swc-linux-arm64-musl": "npm:16.2.6" - "@next/swc-linux-x64-gnu": "npm:16.2.6" - "@next/swc-linux-x64-musl": "npm:16.2.6" - "@next/swc-win32-arm64-msvc": "npm:16.2.6" - "@next/swc-win32-x64-msvc": "npm:16.2.6" + "@next/env": "npm:16.2.7" + "@next/swc-darwin-arm64": "npm:16.2.7" + "@next/swc-darwin-x64": "npm:16.2.7" + "@next/swc-linux-arm64-gnu": "npm:16.2.7" + "@next/swc-linux-arm64-musl": "npm:16.2.7" + "@next/swc-linux-x64-gnu": "npm:16.2.7" + "@next/swc-linux-x64-musl": "npm:16.2.7" + "@next/swc-win32-arm64-msvc": "npm:16.2.7" + "@next/swc-win32-x64-msvc": "npm:16.2.7" "@swc/helpers": "npm:0.5.15" baseline-browser-mapping: "npm:^2.9.19" caniuse-lite: "npm:^1.0.30001579" @@ -8361,7 +8350,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/3572071eb0e8051c3b007224dcf642037ce27a2f4b75c45f7e0fe7f2343e98e66604ce8696dde56ecd72963900d330d3a3af0f068f34cfc67520180263effa5f + checksum: 10c0/11ba48609b3e2e6f380021b3c394c51a9e85a2c4569d19f11be24c7ee1dc5c0d4028e9ef824982043c48e2cb8583b949471153838aec85614a348fb38fb0eff9 languageName: node linkType: hard @@ -9338,14 +9327,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:19.2.6": - version: 19.2.6 - resolution: "react-dom@npm:19.2.6" +"react-dom@npm:19.2.7": + version: 19.2.7 + resolution: "react-dom@npm:19.2.7" dependencies: scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.2.6 - checksum: 10c0/dbf2aef67857c03a612bc9316a4562e5066f43fa04bf28f7f0734963fc1350da2c9f8eb973930655453281079f30cc8222bab383dbec4b5097084e2c081e3334 + react: ^19.2.7 + checksum: 10c0/970ff600f6e80d47d39e2f226f12f226173b3cba3382efc97c5f0cd663de9af38c7a4c11c213fb936094faeac83060d660247accaa96b752180d5b951b9cfecb languageName: node linkType: hard @@ -9407,15 +9396,15 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:7.16.0": - version: 7.16.0 - resolution: "react-router-dom@npm:7.16.0" +"react-router-dom@npm:7.17.0": + version: 7.17.0 + resolution: "react-router-dom@npm:7.17.0" dependencies: - react-router: "npm:7.16.0" + react-router: "npm:7.17.0" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10c0/201b816667e17a5da2b4a45859130efcc36776851ab475cd3538dd5c49b03dbac257e453e0d54ee7c245189bb2cf4fc288b6d01da2282983c03acbf880888a3e + checksum: 10c0/60fc4022bccf2fb17b0d8ae8e7c4bda866ca9bf2d45edf0bcbefc854e97fa8971a589b6b77b984a19abecb718faffde357c829d9a22a7913790d608cc7433714 languageName: node linkType: hard @@ -9430,9 +9419,9 @@ __metadata: languageName: node linkType: hard -"react-router@npm:7.16.0": - version: 7.16.0 - resolution: "react-router@npm:7.16.0" +"react-router@npm:7.17.0": + version: 7.17.0 + resolution: "react-router@npm:7.17.0" dependencies: cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" @@ -9442,7 +9431,7 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10c0/a3d7825c945183dd16f9cb7cf7c16bed859f78cf3049b467d6c9b84bdf0f7357027e821b1f3e187cecfb41e82c0f0bb625432e0ef9aa9d94b778a533204f6b7c + checksum: 10c0/dfa9b0182edba6fab14ef5ac297b292068e71e05bf7e07c6b45fe073d77002089e8e164542364232a8bbb0c7d3ec47b57b78db3984c4383e12308f2d31ad404a languageName: node linkType: hard @@ -9462,10 +9451,10 @@ __metadata: languageName: node linkType: hard -"react@npm:19.2.6": - version: 19.2.6 - resolution: "react@npm:19.2.6" - checksum: 10c0/66afde33b9a9ee87b1e1cae39d8e7e040d1262e719524fd70660c4d4ce79929c532ac19fc3df5a911edaf02768fdf2c49de4ede1ba99bc6aad72796e0e26e798 +"react@npm:19.2.7": + version: 19.2.7 + resolution: "react@npm:19.2.7" + checksum: 10c0/0bd0e2f1bbd4ba97561c6597bf8a5fec05e6476fe61e165c1065598d16668efc6715205599c94d3ddd49d36cb0f21cbf1b9bcc18ee840b805ce222c3e8d558ac languageName: node linkType: hard @@ -9516,15 +9505,6 @@ __metadata: languageName: node linkType: hard -"regexp-tree@npm:^0.1.27": - version: 0.1.27 - resolution: "regexp-tree@npm:0.1.27" - bin: - regexp-tree: bin/regexp-tree - checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c - languageName: node - linkType: hard - "registry-auth-token@npm:^5.0.2": version: 5.1.1 resolution: "registry-auth-token@npm:5.1.1" @@ -9934,6 +9914,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.8.2": + version: 7.8.4 + resolution: "semver@npm:7.8.4" + bin: + semver: bin/semver.js + checksum: 10c0/81b7c296fd7927b80f67fa516b75fa1017caac8167795320de28e76ccbc6f7f01763c30ecd10d6a0d8fd089708ab0548a5aebb94b0870e99c2a2b4600a46389b + languageName: node + linkType: hard + "send@npm:^1.1.0, send@npm:^1.2.0": version: 1.2.1 resolution: "send@npm:1.2.1" @@ -11040,18 +11029,18 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.60.0": - version: 8.60.0 - resolution: "typescript-eslint@npm:8.60.0" +"typescript-eslint@npm:8.60.1": + version: 8.60.1 + resolution: "typescript-eslint@npm:8.60.1" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.60.0" - "@typescript-eslint/parser": "npm:8.60.0" - "@typescript-eslint/typescript-estree": "npm:8.60.0" - "@typescript-eslint/utils": "npm:8.60.0" + "@typescript-eslint/eslint-plugin": "npm:8.60.1" + "@typescript-eslint/parser": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.1.0" - checksum: 10c0/6968de79ab61b1c56d7233260a3092daf578399117d804c46b34dcedf0317b33cd3025ba34789b8dc4567f30f6d62d0d11691c9dca278173abe91772741ab79d + checksum: 10c0/75a42e14b4a7446dd9ad992422135f696e0af58d7c0f64ff2d9f157f1df7bac6a089fa7a35454d2393eadd329e602c0002c07043bbcf4906f7007e45e783b54e languageName: node linkType: hard @@ -11122,10 +11111,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:8.3.0": - version: 8.3.0 - resolution: "undici@npm:8.3.0" - checksum: 10c0/6a67e46aefc7b882702e76878c4d317040f1ae04aefbab3a3639bcb07b255a050eaf3202ea56b80c42ba5c7140d990cf0096412ca50d6c825a2e1c57c59d1e28 +"undici@npm:8.4.0": + version: 8.4.0 + resolution: "undici@npm:8.4.0" + checksum: 10c0/5ee96ecfd3df955dcd1a368ac3ec68e875bd75e81d5435d6605d2ea24b09f1e54eae675215266ccff8a212d39986630d520e804e29e9f11ba6fd177947477bdd languageName: node linkType: hard From 46a12f64da1ef7f11c0a6198fc9f809f1e539133 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 16 Jun 2026 09:20:28 +0200 Subject: [PATCH 18/19] refactor(monitor): stop re-exporting setDebugMode from browser-core - Remove `export { setDebugMode }` from browser-core's monitor.ts - Update init.ts and segment.spec.ts to import setDebugMode directly from @datadog/js-core/util instead of @datadog/browser-core - Remove setDebugMode from browser-core's public index.ts exports - Simplify `monitored` decorator in js-core to assign monitor(fn) directly instead of wrapping in an extra closure - Move the console-patching comment in display.ts closer to the relevant code it describes --- packages/browser-core/src/boot/init.ts | 2 +- packages/browser-core/src/index.ts | 2 +- packages/browser-core/src/tools/monitor.ts | 2 -- .../src/domain/segmentCollection/segment.spec.ts | 3 ++- packages/js-core/src/entries/monitor.ts | 5 +---- packages/js-core/src/util/display.ts | 16 +++++++--------- 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/packages/browser-core/src/boot/init.ts b/packages/browser-core/src/boot/init.ts index 2abe3edc96..34a85bf6db 100644 --- a/packages/browser-core/src/boot/init.ts +++ b/packages/browser-core/src/boot/init.ts @@ -1,5 +1,5 @@ import { catchUserErrors } from '../tools/catchUserErrors' -import { setDebugMode } from '../tools/monitor' +import { setDebugMode } from '@datadog/js-core/util' import { display } from '../tools/display' // replaced at build time diff --git a/packages/browser-core/src/index.ts b/packages/browser-core/src/index.ts index 7c2a230eee..cf61c840ac 100644 --- a/packages/browser-core/src/index.ts +++ b/packages/browser-core/src/index.ts @@ -48,7 +48,7 @@ export { addTelemetryUsage, addTelemetryMetrics, } from './domain/telemetry' -export { monitored, monitor, callMonitored, setDebugMode, monitorError } from './tools/monitor' +export { monitored, monitor, callMonitored, monitorError } from './tools/monitor' export type { Subscription } from './tools/observable' export { Observable, BufferedObservable } from './tools/observable' export type { SessionManager, SessionContext } from './domain/session/sessionManager' diff --git a/packages/browser-core/src/tools/monitor.ts b/packages/browser-core/src/tools/monitor.ts index 797b3f93bc..ae590618aa 100644 --- a/packages/browser-core/src/tools/monitor.ts +++ b/packages/browser-core/src/tools/monitor.ts @@ -3,8 +3,6 @@ import { createMonitor } from '@datadog/js-core/monitor' import { setDebugMode } from '@datadog/js-core/util' import { display } from './display' -export { setDebugMode } - // The error-collection callback is wired lazily (via `startMonitorErrorCollection`, during telemetry // init), so we pass a stable forwarding function to `createMonitor` and keep the real callback in a // mutable holder. diff --git a/packages/browser-rum/src/domain/segmentCollection/segment.spec.ts b/packages/browser-rum/src/domain/segmentCollection/segment.spec.ts index 3e760a83dd..786afdb09c 100644 --- a/packages/browser-rum/src/domain/segmentCollection/segment.spec.ts +++ b/packages/browser-rum/src/domain/segmentCollection/segment.spec.ts @@ -1,6 +1,7 @@ import type { DeflateEncoder, Uint8ArrayBuffer } from '@datadog/browser-core' import type { TimeStamp } from '@datadog/js-core/time' -import { noop, setDebugMode, DeflateEncoderStreamId } from '@datadog/browser-core' +import { noop, DeflateEncoderStreamId } from '@datadog/browser-core' +import { setDebugMode } from '@datadog/js-core/util' import { registerCleanupTask } from '@datadog/browser-core/test' import { MockWorker } from '../../../test' import type { CreationReason, BrowserRecord, SegmentContext, BrowserSegment, BrowserSegmentMetadata } from '../../types' diff --git a/packages/js-core/src/entries/monitor.ts b/packages/js-core/src/entries/monitor.ts index f36d03efac..e2aea91fcf 100644 --- a/packages/js-core/src/entries/monitor.ts +++ b/packages/js-core/src/entries/monitor.ts @@ -109,10 +109,7 @@ export function createMonitor(display: Display, onMonitorErrorCollected: (error: __: string, descriptor: TypedPropertyDescriptor ) { - const originalMethod = descriptor.value! - descriptor.value = function (this: ThisParameterType, ...args: Parameters): ReturnType { - return monitor(originalMethod).apply(this, args) as ReturnType - } as T + descriptor.value = monitor(descriptor.value!) } function monitor unknown>(fn: T): T { diff --git a/packages/js-core/src/util/display.ts b/packages/js-core/src/util/display.ts index 31ca315698..f845b3a1c9 100644 --- a/packages/js-core/src/util/display.ts +++ b/packages/js-core/src/util/display.ts @@ -1,11 +1,3 @@ -/** - * Keep references on console methods to avoid triggering patched behaviors - * - * NB: in some setup, console could already be patched by another SDK. - * In this case, some display messages can be sent by the other SDK - * but we should be safe from infinite loop nonetheless. - */ - /** Names of the console methods wrapped by {@link Display}. */ export const ConsoleApiName = { log: 'log', @@ -38,7 +30,13 @@ export interface Display { */ export const globalConsole = console -/** The original (unpatched) console methods, captured at module load. */ +/** + * Keep references on console methods to avoid triggering patched behaviors + * + * NB: in some setup, console could already be patched by another SDK. + * In this case, some display messages can be sent by the other SDK + * but we should be safe from infinite loop nonetheless. + */ export const originalConsoleMethods: Display = { log: globalConsole.log, debug: globalConsole.debug, From 2ebe098f1a7562b38b323550736b52c9f71a3549 Mon Sep 17 00:00:00 2001 From: Thomas Lebeau Date: Tue, 16 Jun 2026 09:44:12 +0200 Subject: [PATCH 19/19] style(browser-core): fix import order in init.ts --- packages/browser-core/src/boot/init.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-core/src/boot/init.ts b/packages/browser-core/src/boot/init.ts index 34a85bf6db..efc928e0fc 100644 --- a/packages/browser-core/src/boot/init.ts +++ b/packages/browser-core/src/boot/init.ts @@ -1,5 +1,5 @@ -import { catchUserErrors } from '../tools/catchUserErrors' import { setDebugMode } from '@datadog/js-core/util' +import { catchUserErrors } from '../tools/catchUserErrors' import { display } from '../tools/display' // replaced at build time