From 844a6b807afdbdd6fbf52094742dfe9753289a07 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 19 Feb 2026 12:06:38 +0000 Subject: [PATCH 01/11] test: Migrate to Vitest --- .github/workflows/checks.yml | 14 +- .../.eslintrc.js | 9 +- .../jest.config.js | 6 - .../package.json | 6 +- .../__snapshots__/test-plugin.test.ts.snap | 372 +++++------ .../test/experimental.test.ts | 313 +++++----- .../test/test-plugin.test.ts | 39 +- .../test/tsconfig.json | 2 +- packages/bundler-plugin-core/.eslintrc.js | 8 - packages/bundler-plugin-core/jest.config.js | 9 - packages/bundler-plugin-core/package.json | 6 +- .../test/__snapshots__/utils.test.ts.snap | 10 +- .../test/build-plugin-manager.test.ts | 96 ++- .../bundler-plugin-core/test/index.test.ts | 3 +- .../test/option-mappings.test.ts | 11 +- .../test/sentry/logger.test.ts | 9 +- .../test/sentry/resolve-source-maps.test.ts | 5 +- .../test/sentry/telemetry.test.ts | 28 +- .../bundler-plugin-core/test/tsconfig.json | 2 +- .../bundler-plugin-core/test/utils.test.ts | 4 +- packages/dev-utils/.eslintrc.js | 7 - packages/e2e-tests/.eslintrc.js | 15 +- packages/e2e-tests/jest.config.js | 6 - packages/e2e-tests/package.json | 8 +- .../basic-upload/basic-upload.test.ts | 1 + .../e2e-tests/utils/create-cjs-bundles.ts | 2 +- packages/esbuild-plugin/.eslintrc.js | 9 +- packages/esbuild-plugin/jest.config.js | 9 - packages/esbuild-plugin/package.json | 6 +- .../esbuild-plugin/test/public-api.test.ts | 1 + packages/esbuild-plugin/test/tsconfig.json | 2 +- .../deterministic-debug-ids/build-vite.ts | 2 +- .../fixtures/errorhandling/build-vite.ts | 2 +- .../fixtures/telemetry/telemetry.test.ts | 2 +- .../build-vite-with-plugin.ts | 2 +- .../utils/create-cjs-bundles-for-react.ts | 5 +- .../utils/create-cjs-bundles-with-query.ts | 2 +- .../utils/create-cjs-bundles.ts | 2 +- packages/rollup-plugin/.eslintrc.js | 9 +- packages/rollup-plugin/jest.config.js | 6 - packages/rollup-plugin/package.json | 6 +- .../__snapshots__/public-api.test.ts.snap | 11 + .../rollup-plugin/test/public-api.test.ts | 23 +- packages/rollup-plugin/test/tsconfig.json | 2 +- packages/vite-plugin/.eslintrc.js | 9 +- packages/vite-plugin/jest.config.js | 6 - packages/vite-plugin/package.json | 6 +- packages/vite-plugin/src/index.ts | 2 +- packages/vite-plugin/test/public-api.test.ts | 3 +- packages/vite-plugin/test/tsconfig.json | 2 +- packages/webpack-plugin/.eslintrc.js | 7 +- packages/webpack-plugin/jest.config.js | 9 - packages/webpack-plugin/package.json | 6 +- .../webpack-plugin/test/public-api.test.ts | 1 + packages/webpack-plugin/test/tsconfig.json | 2 +- packages/webpack-plugin/test/webpack5.test.ts | 3 +- yarn.lock | 578 +++++++++++++++++- 57 files changed, 1100 insertions(+), 626 deletions(-) delete mode 100644 packages/babel-plugin-component-annotate/jest.config.js delete mode 100644 packages/bundler-plugin-core/jest.config.js delete mode 100644 packages/e2e-tests/jest.config.js delete mode 100644 packages/esbuild-plugin/jest.config.js delete mode 100644 packages/rollup-plugin/jest.config.js create mode 100644 packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap delete mode 100644 packages/vite-plugin/jest.config.js delete mode 100644 packages/webpack-plugin/jest.config.js diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index d32a731e..d4273640 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -21,7 +21,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -54,7 +54,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -80,7 +80,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -107,7 +107,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -154,7 +154,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -192,7 +192,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: @@ -224,7 +224,7 @@ jobs: id: dependency-cache with: path: "**/node_modules" - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }} - name: Use build cache uses: actions/cache@v4 with: diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js index 21c383c6..421c7937 100644 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ b/packages/babel-plugin-component-annotate/.eslintrc.js @@ -1,10 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], + ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], @@ -15,9 +13,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/babel-plugin-component-annotate/jest.config.js b/packages/babel-plugin-component-annotate/jest.config.js deleted file mode 100644 index 160178bb..00000000 --- a/packages/babel-plugin-component-annotate/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index 59d9a520..b567309b 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -46,7 +46,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test" }, "devDependencies": { @@ -55,12 +55,10 @@ "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", diff --git a/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap b/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap index 8a2951dc..5d626df1 100644 --- a/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap +++ b/packages/babel-plugin-component-annotate/test/__snapshots__/test-plugin.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Fragment Detection combines all fragment patterns correctly 1`] = ` +exports[`Fragment Detection > combines all fragment patterns correctly 1`] = ` "import React, { Fragment as ImportedF } from 'react'; import * as MyReact from 'react'; const { @@ -12,60 +12,60 @@ const { const AssignedF = Fragment; // ← This uses the destructured Fragment from MyReact export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - className: \\"container\\", - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"JSX Fragment content\\")), /*#__PURE__*/React.createElement(ImportedF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Imported alias content\\")), /*#__PURE__*/React.createElement(DestructuredF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Destructured content\\")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Namespace destructured content\\")), /*#__PURE__*/React.createElement(AssignedF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Variable assigned content\\")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"React.Fragment content\\")), /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Namespace Fragment content\\"))); + return /*#__PURE__*/React.createElement("div", { + className: "container", + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" + }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "JSX Fragment content")), /*#__PURE__*/React.createElement(ImportedF, null, /*#__PURE__*/React.createElement("span", null, "Imported alias content")), /*#__PURE__*/React.createElement(DestructuredF, null, /*#__PURE__*/React.createElement("span", null, "Destructured content")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Namespace destructured content")), /*#__PURE__*/React.createElement(AssignedF, null, /*#__PURE__*/React.createElement("span", null, "Variable assigned content")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "React.Fragment content")), /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Namespace Fragment content"))); }" `; -exports[`Fragment Detection handles Fragment aliased correctly when used by other non-Fragment components in a different scope 1`] = ` +exports[`Fragment Detection > handles Fragment aliased correctly when used by other non-Fragment components in a different scope 1`] = ` "import { Fragment as OriginalF } from 'react'; import { OtherComponent } from 'some-library'; function TestComponent() { const F = OriginalF; // Use Fragment alias - should be ignored - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"This should NOT have data-sentry-element (Fragment)\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", null, "This should NOT have data-sentry-element (Fragment)")); } function AnotherComponent() { // Different component with same alias name in different function scope const F = OtherComponent; - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"This SHOULD have data-sentry-element (not Fragment)\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", null, "This SHOULD have data-sentry-element (not Fragment)")); }" `; -exports[`Fragment Detection handles complex variable assignment chains 1`] = ` +exports[`Fragment Detection > handles complex variable assignment chains 1`] = ` "import { Fragment } from 'react'; const MyFragment = Fragment; const AnotherFragment = MyFragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(AnotherFragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in chained fragment\\")); + return /*#__PURE__*/React.createElement(AnotherFragment, null, /*#__PURE__*/React.createElement("div", null, "Content in chained fragment")); }" `; -exports[`Fragment Detection handles destructuring from aliased React imports 1`] = ` +exports[`Fragment Detection > handles destructuring from aliased React imports 1`] = ` "import MyReact from 'react'; const { Fragment } = MyReact; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content from aliased React destructuring\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content from aliased React destructuring")); }" `; -exports[`Fragment Detection handles destructuring from namespace imports 1`] = ` +exports[`Fragment Detection > handles destructuring from namespace imports 1`] = ` "import * as ReactLib from 'react'; const { Fragment: F } = ReactLib; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content from namespace destructuring\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", null, "Content from namespace destructuring")); }" `; -exports[`Fragment Detection handles multiple destructuring patterns in one file 1`] = ` +exports[`Fragment Detection > handles multiple destructuring patterns in one file 1`] = ` "import React from 'react'; import * as MyReact from 'react'; const { @@ -75,32 +75,32 @@ const { Fragment: AliasedFrag } = MyReact; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Regular destructured\\")), /*#__PURE__*/React.createElement(AliasedFrag, null, /*#__PURE__*/React.createElement(\\"p\\", null, \\"Aliased destructured\\"))); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" + }, /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Regular destructured")), /*#__PURE__*/React.createElement(AliasedFrag, null, /*#__PURE__*/React.createElement("p", null, "Aliased destructured"))); }" `; -exports[`Fragment Detection ignores Fragment assigned to variable 1`] = ` +exports[`Fragment Detection > ignores Fragment assigned to variable 1`] = ` "import { Fragment } from 'react'; const MyFragment = Fragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in variable fragment\\")); + return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("div", null, "Content in variable fragment")); }" `; -exports[`Fragment Detection ignores Fragment from React destructuring 1`] = ` +exports[`Fragment Detection > ignores Fragment from React destructuring 1`] = ` "import React from 'react'; const { Fragment } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in destructured fragment\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content in destructured fragment")); }" `; -exports[`Fragment Detection ignores Fragment from mixed destructuring 1`] = ` +exports[`Fragment Detection > ignores Fragment from mixed destructuring 1`] = ` "import React from 'react'; const { Fragment, @@ -108,88 +108,88 @@ const { useState } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content with other destructured items\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content with other destructured items")); }" `; -exports[`Fragment Detection ignores Fragment imported with alias 1`] = ` +exports[`Fragment Detection > ignores Fragment imported with alias 1`] = ` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in aliased fragment\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", null, "Content in aliased fragment")); }" `; -exports[`Fragment Detection ignores Fragment with React namespace alias 1`] = ` +exports[`Fragment Detection > ignores Fragment with React namespace alias 1`] = ` "import * as MyReact from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in namespaced fragment\\")); + return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content in namespaced fragment")); }" `; -exports[`Fragment Detection ignores Fragment with destructuring alias 1`] = ` +exports[`Fragment Detection > ignores Fragment with destructuring alias 1`] = ` "import React from 'react'; const { Fragment: MyFragment } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in aliased destructured fragment\\")); + return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("div", null, "Content in aliased destructured fragment")); }" `; -exports[`Fragment Detection ignores JSX fragments (<>) 1`] = ` +exports[`Fragment Detection > ignores JSX fragments (<>) 1`] = ` "export default function TestComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in JSX fragment\\"), /*#__PURE__*/React.createElement(\\"span\\", null, \\"More content\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content in JSX fragment"), /*#__PURE__*/React.createElement("span", null, "More content")); }" `; -exports[`Fragment Detection ignores React default import with Fragment 1`] = ` +exports[`Fragment Detection > ignores React default import with Fragment 1`] = ` "import MyReact from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content in default import fragment\\")); + return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content in default import fragment")); }" `; -exports[`Fragment Detection ignores React.Fragment with member expression handling 1`] = ` +exports[`Fragment Detection > ignores React.Fragment with member expression handling 1`] = ` "import React from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, "Content")); }" `; -exports[`Fragment Detection ignores multiple fragment patterns in same file 1`] = ` +exports[`Fragment Detection > ignores multiple fragment patterns in same file 1`] = ` "import React, { Fragment } from 'react'; const MyFragment = Fragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"JSX Fragment content\\")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Direct Fragment content\\")), /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"p\\", null, \\"Variable Fragment content\\")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"React.Fragment content\\"))); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" + }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, "JSX Fragment content")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Direct Fragment content")), /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("p", null, "Variable Fragment content")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "React.Fragment content"))); }" `; -exports[`Fragment Detection works with annotate-fragments option disabled 1`] = ` +exports[`Fragment Detection > works with annotate-fragments option disabled 1`] = ` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"Content\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", null, "Content")); }" `; -exports[`Fragment Detection works with annotate-fragments option enabled 1`] = ` +exports[`Fragment Detection > works with annotate-fragments option enabled 1`] = ` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Content\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" + }, "Content")); }" `; exports[`arrow snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; @@ -197,7 +197,7 @@ export default componentName;" exports[`arrow-anonymous-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `; @@ -205,7 +205,7 @@ export default componentName;" exports[`arrow-anonymous-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `; @@ -213,7 +213,7 @@ export default componentName;" exports[`arrow-anonymous-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `; @@ -221,92 +221,92 @@ export default componentName;" exports[`arrow-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; exports[`arrow-noreturn snapshot matches 1`] = ` "import React, { Component } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" -}, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" +}, /*#__PURE__*/React.createElement("h1", null, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-annotate-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" -}, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" +}, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-annotate-fragment-no-whitespace snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" -}, \\"Hello world\\"), /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hola Sol\\")); +const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" +}, "Hello world"), /*#__PURE__*/React.createElement("h1", null, "Hola Sol")); export default componentName;" `; exports[`arrow-noreturn-annotate-fragment-once snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" -}, \\"Hello world\\"), /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hola Sol\\")); +const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" +}, "Hello world"), /*#__PURE__*/React.createElement("h1", null, "Hola Sol")); export default componentName;" `; exports[`arrow-noreturn-annotate-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" -}, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" +}, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-annotate-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" -}, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" +}, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-annotate-trivial-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, \\"Hello world\\"); +const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, "Hello world"); export default componentName;" `; exports[`arrow-noreturn-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); export default componentName;" `; exports[`arrow-noreturn-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; -const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); +const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); export default componentName;" `; exports[`arrow-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; @@ -314,7 +314,7 @@ export default componentName;" exports[`arrow-shorthand-fragment snapshot matches 1`] = ` "import React from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; @@ -323,9 +323,9 @@ exports[`component snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default componentName;" @@ -335,7 +335,7 @@ exports[`component-annotate-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "A"); } } export default componentName;" @@ -345,10 +345,10 @@ exports[`component-annotate-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" + }, "Hello world")); } } export default componentName;" @@ -358,10 +358,10 @@ exports[`component-annotate-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" + }, "Hello world")); } } export default componentName;" @@ -371,7 +371,7 @@ exports[`component-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "A"); } } export default componentName;" @@ -381,7 +381,7 @@ exports[`component-fragment-native snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "A"); } } export default componentName;" @@ -391,7 +391,7 @@ exports[`component-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "A"); } } export default componentName;" @@ -401,7 +401,7 @@ exports[`component-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "A"); } } export default componentName;" @@ -411,13 +411,13 @@ exports[`handles nested member expressions in component names 1`] = ` "import React from 'react'; import { Components } from 'my-ui-library'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(Components.UI.Button, null, \\"Click me\\"), /*#__PURE__*/React.createElement(Components.UI.Card.Header, { - \\"data-sentry-element\\": \\"Components.UI.Card.Header\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Title\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" + }, /*#__PURE__*/React.createElement(Components.UI.Button, null, "Click me"), /*#__PURE__*/React.createElement(Components.UI.Card.Header, { + "data-sentry-element": "Components.UI.Card.Header", + "data-sentry-source-file": "filename-test.js" + }, "Title")); }" `; @@ -425,8 +425,8 @@ exports[`handles ternary operation returned by function body 1`] = ` "const maybeTrue = Math.random() > 0.5; export default function componentName() { return maybeTrue ? '' : /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\", - \\"data-sentry-component\\": \\"componentName\\" + "data-sentry-element": "SubComponent", + "data-sentry-component": "componentName" }); }" `; @@ -435,16 +435,16 @@ exports[`ignores components with member expressions when in ignoredComponents 1` "import React from 'react'; import { Tab } from '@headlessui/react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent", + "data-sentry-source-file": "filename-test.js" }, /*#__PURE__*/React.createElement(Tab.Group, null, /*#__PURE__*/React.createElement(Tab.List, null, /*#__PURE__*/React.createElement(Tab, { - \\"data-sentry-element\\": \\"Tab\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Tab 1\\"), /*#__PURE__*/React.createElement(Tab, { - \\"data-sentry-element\\": \\"Tab\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, \\"Tab 2\\")), /*#__PURE__*/React.createElement(Tab.Panels, null, /*#__PURE__*/React.createElement(Tab.Panel, null, \\"Content 1\\"), /*#__PURE__*/React.createElement(Tab.Panel, null, \\"Content 2\\")))); + "data-sentry-element": "Tab", + "data-sentry-source-file": "filename-test.js" + }, "Tab 1"), /*#__PURE__*/React.createElement(Tab, { + "data-sentry-element": "Tab", + "data-sentry-source-file": "filename-test.js" + }, "Tab 2")), /*#__PURE__*/React.createElement(Tab.Panels, null, /*#__PURE__*/React.createElement(Tab.Panel, null, "Content 1"), /*#__PURE__*/React.createElement(Tab.Panel, null, "Content 2")))); }" `; @@ -461,9 +461,9 @@ export default TestClass;" exports[`option-attribute snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; @@ -471,9 +471,9 @@ export default componentName;" exports[`option-format snapshot matches 1`] = ` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `; @@ -482,9 +482,9 @@ exports[`pure snapshot matches 1`] = ` "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"PureComponentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "PureComponentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -494,10 +494,10 @@ exports[`pure-native snapshot matches 1`] = ` "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - dataSentryComponent: \\"PureComponentName\\", - dataSentrySourceFile: \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + dataSentryComponent: "PureComponentName", + dataSentrySourceFile: "filename-test.js" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -507,7 +507,7 @@ exports[`pureComponent-fragment snapshot matches 1`] = ` "import React, { Fragment } from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -517,7 +517,7 @@ exports[`pureComponent-react-fragment snapshot matches 1`] = ` "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -527,7 +527,7 @@ exports[`pureComponent-shorthand-fragment snapshot matches 1`] = ` "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -536,15 +536,15 @@ export default PureComponentName;" exports[`rawfunction snapshot matches 1`] = ` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"SubComponent\\" - }, \\"Sub\\"); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "SubComponent" + }, "Sub"); } const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" }, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\" + "data-sentry-element": "SubComponent" })); }; export default componentName;" @@ -553,12 +553,12 @@ export default componentName;" exports[`rawfunction-annotate-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\", - \\"data-sentry-component\\": \\"componentName\\" + "data-sentry-element": "SubComponent", + "data-sentry-component": "componentName" })); }; export default componentName;" @@ -567,12 +567,12 @@ export default componentName;" exports[`rawfunction-annotate-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\", - \\"data-sentry-component\\": \\"componentName\\" + "data-sentry-element": "SubComponent", + "data-sentry-component": "componentName" })); }; export default componentName;" @@ -581,12 +581,12 @@ export default componentName;" exports[`rawfunction-annotate-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\", - \\"data-sentry-component\\": \\"componentName\\" + "data-sentry-element": "SubComponent", + "data-sentry-component": "componentName" })); }; export default componentName;" @@ -595,11 +595,11 @@ export default componentName;" exports[`rawfunction-fragment snapshot matches 1`] = ` "import React, { Component, Fragment } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\" + "data-sentry-element": "SubComponent" })); }; export default componentName;" @@ -608,11 +608,11 @@ export default componentName;" exports[`rawfunction-react-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\" + "data-sentry-element": "SubComponent" })); }; export default componentName;" @@ -621,11 +621,11 @@ export default componentName;" exports[`rawfunction-shorthand-fragment snapshot matches 1`] = ` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, { - \\"data-sentry-element\\": \\"SubComponent\\" + "data-sentry-element": "SubComponent" })); }; export default componentName;" @@ -634,7 +634,7 @@ export default componentName;" exports[`tags snapshot matches 1`] = ` "import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; -UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = \\"String\\"; +UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; class Bananas extends Component { render() { let pic = { @@ -647,10 +647,10 @@ class Bananas extends Component { height: 110, marginTop: 10 }, - fsClass: \\"test-class\\", - dataSentryElement: \\"Image\\", - dataSentryComponent: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" + fsClass: "test-class", + dataSentryElement: "Image", + dataSentryComponent: "Bananas", + dataSentrySourceFile: "filename-test.js" }); } } @@ -666,51 +666,51 @@ class PizzaTranslator extends Component { style: { padding: 10 }, - dataSentryElement: \\"View\\", - dataSentryComponent: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "View", + dataSentryComponent: "PizzaTranslator", + dataSentrySourceFile: "filename-test.js" }, /*#__PURE__*/React.createElement(TextInput, { style: { backgroundColor: '#000', color: '#eee', padding: 8 }, - placeholder: \\"Type here to translate!\\" // not supported on iOS + placeholder: "Type here to translate!" // not supported on iOS , onChangeText: text => this.setState({ text }), value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "TextInput", + dataSentrySourceFile: "filename-test.js" }), /*#__PURE__*/React.createElement(Text, { style: { padding: 10, fontSize: 42 }, - dataSentryElement: \\"Text\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "Text", + dataSentrySourceFile: "filename-test.js" }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); } } export default function App() { return /*#__PURE__*/React.createElement(View, { style: styles.container, - dataSentryElement: \\"View\\", - dataSentryComponent: \\"App\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "View", + dataSentryComponent: "App", + dataSentrySourceFile: "filename-test.js" }, /*#__PURE__*/React.createElement(Text, { style: { color: '#eee' }, - dataSentryElement: \\"Text\\", - dataSentrySourceFile: \\"filename-test.js\\" - }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, { - dataSentryElement: \\"Bananas\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "Text", + dataSentrySourceFile: "filename-test.js" + }, "FullStory ReactNative testing app"), /*#__PURE__*/React.createElement(Bananas, { + dataSentryElement: "Bananas", + dataSentrySourceFile: "filename-test.js" }), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "PizzaTranslator", + dataSentrySourceFile: "filename-test.js" })); } const styles = StyleSheet.create({ @@ -729,11 +729,11 @@ exports[`unknown-element snapshot matches 1`] = ` "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(\\"bogus\\", { - \\"data-sentry-element\\": \\"bogus\\", - \\"data-sentry-component\\": \\"componentName\\", - \\"data-sentry-source-file\\": \\"filename-test.js\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"A\\")); + return /*#__PURE__*/React.createElement("bogus", { + "data-sentry-element": "bogus", + "data-sentry-component": "componentName", + "data-sentry-source-file": "filename-test.js" + }, /*#__PURE__*/React.createElement("h1", null, "A")); } } export default componentName;" diff --git a/packages/babel-plugin-component-annotate/test/experimental.test.ts b/packages/babel-plugin-component-annotate/test/experimental.test.ts index 2f2fa189..121582ff 100644 --- a/packages/babel-plugin-component-annotate/test/experimental.test.ts +++ b/packages/babel-plugin-component-annotate/test/experimental.test.ts @@ -23,6 +23,7 @@ * */ +import { describe, it, expect } from "vitest"; import { transform } from "@babel/core"; import { experimentalComponentNameAnnotatePlugin as plugin } from "../src/index"; @@ -103,9 +104,9 @@ export default componentName; "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(\\"bogus\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"A\\")); + return /*#__PURE__*/React.createElement("bogus", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "A")); } } export default componentName;" @@ -135,7 +136,7 @@ export default componentName; "import React, { Component, Fragment } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "A"); } } export default componentName;" @@ -165,7 +166,7 @@ export default componentName; "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "A"); } } export default componentName;" @@ -195,7 +196,7 @@ export default componentName; "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "A"); } } export default componentName;" @@ -227,9 +228,9 @@ export default componentName; "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); } } export default componentName;" @@ -257,9 +258,9 @@ export default componentName; ); expect(result?.code).toMatchInlineSnapshot(` "import React, { Component, Fragment } from 'react'; - const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); export default componentName;" `); }); @@ -285,9 +286,9 @@ export default componentName; ); expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; - const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); export default componentName;" `); }); @@ -311,9 +312,9 @@ export default componentName; ); expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; - const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + const componentName = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); export default componentName;" `); }); @@ -337,7 +338,7 @@ export default componentName; ); expect(result?.code).toMatchInlineSnapshot(` "import React, { Component, Fragment } from 'react'; - const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, \\"Hello world\\"); + const componentName = () => /*#__PURE__*/React.createElement(Fragment, null, "Hello world"); export default componentName;" `); }); @@ -362,9 +363,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `); @@ -390,9 +391,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `); @@ -421,9 +422,9 @@ export default componentName; "import React, { Component } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default componentName;" @@ -454,7 +455,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component, Fragment } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); @@ -487,7 +488,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); @@ -520,7 +521,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, \\"Sub\\"); + return /*#__PURE__*/React.createElement(React.Fragment, null, "Sub"); } const componentName = () => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubComponent, null)); @@ -548,9 +549,9 @@ export default componentName; ); expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; - const componentName = () => /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + const componentName = () => /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); export default componentName;" `); }); @@ -621,7 +622,7 @@ const styles = StyleSheet.create({ expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; - UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = \\"String\\"; + UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; class Bananas extends Component { render() { let pic = { @@ -634,8 +635,8 @@ const styles = StyleSheet.create({ height: 110, marginTop: 10 }, - fsClass: \\"test-class\\", - dataSentryComponent: \\"Bananas\\" + fsClass: "test-class", + dataSentryComponent: "Bananas" }); } } @@ -651,14 +652,14 @@ const styles = StyleSheet.create({ style: { padding: 10 }, - dataSentryComponent: \\"PizzaTranslator\\" + dataSentryComponent: "PizzaTranslator" }, /*#__PURE__*/React.createElement(TextInput, { style: { backgroundColor: '#000', color: '#eee', padding: 8 }, - placeholder: \\"Type here to translate!\\" // not supported on iOS + placeholder: "Type here to translate!" // not supported on iOS , onChangeText: text => this.setState({ text @@ -675,12 +676,12 @@ const styles = StyleSheet.create({ export default function App() { return /*#__PURE__*/React.createElement(View, { style: styles.container, - dataSentryComponent: \\"App\\" + dataSentryComponent: "App" }, /*#__PURE__*/React.createElement(Text, { style: { color: '#eee' } - }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + }, "FullStory ReactNative testing app"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); } const styles = StyleSheet.create({ container: { @@ -715,9 +716,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); }; export default componentName;" `); @@ -746,9 +747,9 @@ export default PureComponentName; "import React, { Fragment } from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"PureComponentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "PureComponentName" + }, "Hello world")); } } export default PureComponentName;" @@ -778,9 +779,9 @@ export default PureComponentName; "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"PureComponentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "PureComponentName" + }, "Hello world")); } } export default PureComponentName;" @@ -810,9 +811,9 @@ export default PureComponentName; "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"PureComponentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "PureComponentName" + }, "Hello world")); } } export default PureComponentName;" @@ -843,13 +844,13 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; function SubComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"SubComponent\\" - }, \\"Sub\\"); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "SubComponent" + }, "Sub"); } const componentName = () => { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"componentName\\" + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "componentName" }, /*#__PURE__*/React.createElement(SubComponent, null)); }; export default componentName;" @@ -876,9 +877,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component, Fragment } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); }; export default componentName;" `); @@ -904,9 +905,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); }; export default componentName;" `); @@ -932,9 +933,9 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", { - \\"data-sentry-component\\": \\"componentName\\" - }, \\"Hello world\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", { + "data-sentry-component": "componentName" + }, "Hello world")); }; export default componentName;" `); @@ -988,7 +989,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component, Fragment } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `); @@ -1014,7 +1015,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `); @@ -1040,7 +1041,7 @@ export default componentName; expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; const componentName = () => { - return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")))(); + return (() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Hello world")))(); }; export default componentName;" `); @@ -1069,9 +1070,9 @@ export default PureComponentName; "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"PureComponentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "PureComponentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -1099,7 +1100,7 @@ export default componentName; "import React, { Component, Fragment } from 'react'; class componentName extends Component { render() { - return /*#__PURE__*/React.createElement(Fragment, null, \\"A\\"); + return /*#__PURE__*/React.createElement(Fragment, null, "A"); } } export default componentName;" @@ -1131,9 +1132,9 @@ export default PureComponentName; "import React from 'react'; class PureComponentName extends React.PureComponent { render() { - return /*#__PURE__*/React.createElement(\\"div\\", { - dataSentryComponent: \\"PureComponentName\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Hello world\\")); + return /*#__PURE__*/React.createElement("div", { + dataSentryComponent: "PureComponentName" + }, /*#__PURE__*/React.createElement("h1", null, "Hello world")); } } export default PureComponentName;" @@ -1149,7 +1150,7 @@ it("skips components marked in ignoredComponents", () => { expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; - UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = \\"String\\"; + UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; class Bananas extends Component { render() { let pic = { @@ -1162,7 +1163,7 @@ it("skips components marked in ignoredComponents", () => { height: 110, marginTop: 10 }, - fsClass: \\"test-class\\" + fsClass: "test-class" }); } } @@ -1178,14 +1179,14 @@ it("skips components marked in ignoredComponents", () => { style: { padding: 10 }, - dataSentryComponent: \\"PizzaTranslator\\" + dataSentryComponent: "PizzaTranslator" }, /*#__PURE__*/React.createElement(TextInput, { style: { backgroundColor: '#000', color: '#eee', padding: 8 }, - placeholder: \\"Type here to translate!\\" // not supported on iOS + placeholder: "Type here to translate!" // not supported on iOS , onChangeText: text => this.setState({ text @@ -1202,12 +1203,12 @@ it("skips components marked in ignoredComponents", () => { export default function App() { return /*#__PURE__*/React.createElement(View, { style: styles.container, - dataSentryComponent: \\"App\\" + dataSentryComponent: "App" }, /*#__PURE__*/React.createElement(Text, { style: { color: '#eee' } - }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); + }, "FullStory ReactNative testing app"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, null)); } const styles = StyleSheet.create({ container: { @@ -1281,9 +1282,9 @@ export default function TestComponent() { "import React from 'react'; import { Tab } from '@headlessui/react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(Tab.Group, null, /*#__PURE__*/React.createElement(Tab.List, null, /*#__PURE__*/React.createElement(Tab, null, \\"Tab 1\\"), /*#__PURE__*/React.createElement(Tab, null, \\"Tab 2\\")), /*#__PURE__*/React.createElement(Tab.Panels, null, /*#__PURE__*/React.createElement(Tab.Panel, null, \\"Content 1\\"), /*#__PURE__*/React.createElement(Tab.Panel, null, \\"Content 2\\")))); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement(Tab.Group, null, /*#__PURE__*/React.createElement(Tab.List, null, /*#__PURE__*/React.createElement(Tab, null, "Tab 1"), /*#__PURE__*/React.createElement(Tab, null, "Tab 2")), /*#__PURE__*/React.createElement(Tab.Panels, null, /*#__PURE__*/React.createElement(Tab.Panel, null, "Content 1"), /*#__PURE__*/React.createElement(Tab.Panel, null, "Content 2")))); }" `); }); @@ -1317,9 +1318,9 @@ export default function TestComponent() { "import React from 'react'; import { Components } from 'my-ui-library'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(Components.UI.Button, null, \\"Click me\\"), /*#__PURE__*/React.createElement(Components.UI.Card.Header, null, \\"Title\\")); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement(Components.UI.Button, null, "Click me"), /*#__PURE__*/React.createElement(Components.UI.Card.Header, null, "Title")); }" `); }); @@ -1347,13 +1348,13 @@ export default function TestComponent() { ); expect(result?.code).toMatchInlineSnapshot(` - "import { Fragment as F } from 'react'; - export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"Title\\"), /*#__PURE__*/React.createElement(\\"p\\", null, \\"Content\\"))); - }" - `); + "import { Fragment as F } from 'react'; + export default function TestComponent() { + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement("h1", null, "Title"), /*#__PURE__*/React.createElement("p", null, "Content"))); + }" + `); }); describe("Fragment Detection", () => { @@ -1381,9 +1382,9 @@ describe("Fragment Detection", () => { expect(result?.code).toMatchInlineSnapshot(` "import React from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content")); }" `); }); @@ -1410,11 +1411,11 @@ describe("Fragment Detection", () => { expect(result?.code).not.toContain('"data-sentry-element": "Fragment"'); expect(result?.code).toMatchInlineSnapshot(` "export default function TestComponent() { - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in JSX fragment\\"), /*#__PURE__*/React.createElement(\\"span\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"More content\\")); + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in JSX fragment"), /*#__PURE__*/React.createElement("span", { + "data-sentry-component": "TestComponent" + }, "More content")); }" `); }); @@ -1443,9 +1444,9 @@ export default function TestComponent() { expect(result?.code).toMatchInlineSnapshot(` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in aliased fragment\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in aliased fragment")); }" `); }); @@ -1477,9 +1478,9 @@ export default function TestComponent() { "import { Fragment } from 'react'; const MyFragment = Fragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in variable fragment\\")); + return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in variable fragment")); }" `); }); @@ -1508,9 +1509,9 @@ export default function TestComponent() { expect(result?.code).toMatchInlineSnapshot(` "import * as MyReact from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in namespaced fragment\\")); + return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in namespaced fragment")); }" `); }); @@ -1539,9 +1540,9 @@ export default function TestComponent() { expect(result?.code).toMatchInlineSnapshot(` "import MyReact from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in default import fragment\\")); + return /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in default import fragment")); }" `); }); @@ -1588,9 +1589,9 @@ export default function TestComponent() { "import React, { Fragment } from 'react'; const MyFragment = Fragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", null, \\"JSX Fragment content\\")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Direct Fragment content\\")), /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"p\\", null, \\"Variable Fragment content\\")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"h1\\", null, \\"React.Fragment content\\"))); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, "JSX Fragment content")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Direct Fragment content")), /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("p", null, "Variable Fragment content")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "React.Fragment content"))); }" `); }); @@ -1624,9 +1625,9 @@ export default function TestComponent() { const MyFragment = Fragment; const AnotherFragment = MyFragment; export default function TestComponent() { - return /*#__PURE__*/React.createElement(AnotherFragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in chained fragment\\")); + return /*#__PURE__*/React.createElement(AnotherFragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in chained fragment")); }" `); }); @@ -1654,9 +1655,9 @@ export default function TestComponent() { expect(result?.code).toMatchInlineSnapshot(` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content")); }" `); }); @@ -1684,9 +1685,9 @@ export default function TestComponent() { expect(result?.code).toMatchInlineSnapshot(` "import { Fragment as F } from 'react'; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content")); }" `); }); @@ -1719,9 +1720,9 @@ export default function TestComponent() { Fragment } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in destructured fragment\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in destructured fragment")); }" `); }); @@ -1754,9 +1755,9 @@ export default function TestComponent() { Fragment: MyFragment } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content in aliased destructured fragment\\")); + return /*#__PURE__*/React.createElement(MyFragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content in aliased destructured fragment")); }" `); }); @@ -1791,9 +1792,9 @@ export default function TestComponent() { useState } = React; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content with other destructured items\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content with other destructured items")); }" `); }); @@ -1826,9 +1827,9 @@ export default function TestComponent() { Fragment } = MyReact; export default function TestComponent() { - return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content from aliased React destructuring\\")); + return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content from aliased React destructuring")); }" `); }); @@ -1861,9 +1862,9 @@ export default function TestComponent() { Fragment: F } = ReactLib; export default function TestComponent() { - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"Content from namespace destructuring\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "Content from namespace destructuring")); }" `); }); @@ -1909,9 +1910,9 @@ export default function TestComponent() { Fragment: AliasedFrag } = MyReact; export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Regular destructured\\")), /*#__PURE__*/React.createElement(AliasedFrag, null, /*#__PURE__*/React.createElement(\\"p\\", null, \\"Aliased destructured\\"))); + return /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Regular destructured")), /*#__PURE__*/React.createElement(AliasedFrag, null, /*#__PURE__*/React.createElement("p", null, "Aliased destructured"))); }" `); }); @@ -1991,10 +1992,10 @@ export default function TestComponent() { const AssignedF = Fragment; // ← This uses the destructured Fragment from MyReact export default function TestComponent() { - return /*#__PURE__*/React.createElement(\\"div\\", { - className: \\"container\\", - \\"data-sentry-component\\": \\"TestComponent\\" - }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"JSX Fragment content\\")), /*#__PURE__*/React.createElement(ImportedF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Imported alias content\\")), /*#__PURE__*/React.createElement(DestructuredF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Destructured content\\")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Namespace destructured content\\")), /*#__PURE__*/React.createElement(AssignedF, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Variable assigned content\\")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"React.Fragment content\\")), /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement(\\"span\\", null, \\"Namespace Fragment content\\"))); + return /*#__PURE__*/React.createElement("div", { + className: "container", + "data-sentry-component": "TestComponent" + }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "JSX Fragment content")), /*#__PURE__*/React.createElement(ImportedF, null, /*#__PURE__*/React.createElement("span", null, "Imported alias content")), /*#__PURE__*/React.createElement(DestructuredF, null, /*#__PURE__*/React.createElement("span", null, "Destructured content")), /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", null, "Namespace destructured content")), /*#__PURE__*/React.createElement(AssignedF, null, /*#__PURE__*/React.createElement("span", null, "Variable assigned content")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "React.Fragment content")), /*#__PURE__*/React.createElement(MyReact.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Namespace Fragment content"))); }" `); }); @@ -2042,16 +2043,16 @@ function AnotherComponent() { const F = OriginalF; // Use Fragment alias - should be ignored - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"TestComponent\\" - }, \\"This should NOT have data-sentry-element (Fragment)\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "TestComponent" + }, "This should NOT have data-sentry-element (Fragment)")); } function AnotherComponent() { // Different component with same alias name in different function scope const F = OtherComponent; - return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement(\\"div\\", { - \\"data-sentry-component\\": \\"AnotherComponent\\" - }, \\"This SHOULD have data-sentry-element (not Fragment)\\")); + return /*#__PURE__*/React.createElement(F, null, /*#__PURE__*/React.createElement("div", { + "data-sentry-component": "AnotherComponent" + }, "This SHOULD have data-sentry-element (not Fragment)")); }" `); }); diff --git a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts index a453da77..cb9b61eb 100644 --- a/packages/babel-plugin-component-annotate/test/test-plugin.test.ts +++ b/packages/babel-plugin-component-annotate/test/test-plugin.test.ts @@ -23,6 +23,7 @@ * */ +import { describe, it, expect } from "vitest"; import { transform } from "@babel/core"; import plugin from "../src/index"; @@ -1072,7 +1073,7 @@ it("Bananas incompatible plugin @react-navigation source snapshot matches", () = height: 110, marginTop: 10 }, - fsClass: \\"test-class\\" + fsClass: "test-class" }); } }" @@ -1088,7 +1089,7 @@ it("skips components marked in ignoredComponents", () => { expect(result?.code).toMatchInlineSnapshot(` "import React, { Component } from 'react'; import { StyleSheet, Text, TextInput, View, Image, UIManager } from 'react-native'; - UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = \\"String\\"; + UIManager.getViewManagerConfig('RCTView').NativeProps.fsClass = "String"; class Bananas extends Component { render() { let pic = { @@ -1101,7 +1102,7 @@ it("skips components marked in ignoredComponents", () => { height: 110, marginTop: 10 }, - fsClass: \\"test-class\\" + fsClass: "test-class" }); } } @@ -1117,48 +1118,48 @@ it("skips components marked in ignoredComponents", () => { style: { padding: 10 }, - dataSentryElement: \\"View\\", - dataSentryComponent: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "View", + dataSentryComponent: "PizzaTranslator", + dataSentrySourceFile: "filename-test.js" }, /*#__PURE__*/React.createElement(TextInput, { style: { backgroundColor: '#000', color: '#eee', padding: 8 }, - placeholder: \\"Type here to translate!\\" // not supported on iOS + placeholder: "Type here to translate!" // not supported on iOS , onChangeText: text => this.setState({ text }), value: this.state.text, - dataSentryElement: \\"TextInput\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "TextInput", + dataSentrySourceFile: "filename-test.js" }), /*#__PURE__*/React.createElement(Text, { style: { padding: 10, fontSize: 42 }, - dataSentryElement: \\"Text\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "Text", + dataSentrySourceFile: "filename-test.js" }, this.state.text.split(' ').map(word => word && '🍕').join(' '))); } } export default function App() { return /*#__PURE__*/React.createElement(View, { style: styles.container, - dataSentryElement: \\"View\\", - dataSentryComponent: \\"App\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "View", + dataSentryComponent: "App", + dataSentrySourceFile: "filename-test.js" }, /*#__PURE__*/React.createElement(Text, { style: { color: '#eee' }, - dataSentryElement: \\"Text\\", - dataSentrySourceFile: \\"filename-test.js\\" - }, \\"FullStory ReactNative testing app\\"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, { - dataSentryElement: \\"PizzaTranslator\\", - dataSentrySourceFile: \\"filename-test.js\\" + dataSentryElement: "Text", + dataSentrySourceFile: "filename-test.js" + }, "FullStory ReactNative testing app"), /*#__PURE__*/React.createElement(Bananas, null), /*#__PURE__*/React.createElement(PizzaTranslator, { + dataSentryElement: "PizzaTranslator", + dataSentrySourceFile: "filename-test.js" })); } const styles = StyleSheet.create({ diff --git a/packages/babel-plugin-component-annotate/test/tsconfig.json b/packages/babel-plugin-component-annotate/test/tsconfig.json index b73d9b53..b2d8716f 100644 --- a/packages/babel-plugin-component-annotate/test/tsconfig.json +++ b/packages/babel-plugin-component-annotate/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 50041aab..6f164899 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -1,5 +1,3 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, @@ -7,7 +5,6 @@ module.exports = { ignorePatterns: [ ".eslintrc.js", "dist", - "jest.config.js", "rollup.config.mjs", "test/fixtures/**/*", "sentry-release-injection-file.js", @@ -20,9 +17,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/bundler-plugin-core/jest.config.js b/packages/bundler-plugin-core/jest.config.js deleted file mode 100644 index 5c3aa9d4..00000000 --- a/packages/bundler-plugin-core/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const packageJson = require("./package.json"); - -module.exports = { - testEnvironment: "node", - modulePathIgnorePatterns: ["fixtures"], - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3f90e223..54f92f3c 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -49,7 +49,7 @@ "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", "pretest": "yarn prebuild", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test", "fix": "eslint ./src ./test --format stylish --fix" }, @@ -69,11 +69,9 @@ "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "typescript": "^4.7.4" diff --git a/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap b/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap index c691de25..e35bb4f5 100644 --- a/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap +++ b/packages/bundler-plugin-core/test/__snapshots__/utils.test.ts.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`generateModuleMetadataInjectorCode generates code with empty metadata object 1`] = `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n generates code with empty metadata object 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n generates code with metadata object 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var n=1;n generates code with release 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"1.2.3"};}catch(e){}}();"`; -exports[`generateReleaseInjectorCode generates code with release and build information 1`] = `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};e.SENTRY_RELEASE={id:\\"1.2.3\\"};e.SENTRY_BUILD_INFO={\\"deps\\":[\\"myDep\\",\\"rollup\\"],\\"depsVersions\\":{\\"rollup\\":3},\\"nodeVersion\\":22};}catch(e){}}();"`; +exports[`generateReleaseInjectorCode > generates code with release and build information 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"1.2.3"};e.SENTRY_BUILD_INFO={"deps":["myDep","rollup"],"depsVersions":{"rollup":3},"nodeVersion":22};}catch(e){}}();"`; diff --git a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts index 6c320b6c..176416d5 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -5,49 +5,47 @@ import { import fs from "fs"; import { glob } from "glob"; import { prepareBundleForDebugIdUpload } from "../src/debug-id-upload"; +import { describe, it, expect, afterEach, beforeEach, vi, MockedFunction } from "vitest"; -const mockCliExecute = jest.fn(); -const mockCliUploadSourceMaps = jest.fn(); -const mockCliNewDeploy = jest.fn(); +const { mockCliExecute, mockCliUploadSourceMaps, mockCliNewDeploy } = vi.hoisted(() => ({ + mockCliExecute: vi.fn(), + mockCliUploadSourceMaps: vi.fn(), + mockCliNewDeploy: vi.fn(), +})); -jest.mock("@sentry/cli", () => { - return jest.fn().mockImplementation(() => ({ - execute: mockCliExecute, - releases: { +vi.mock("@sentry/cli", () => ({ + default: class { + execute = mockCliExecute; + releases = { uploadSourceMaps: mockCliUploadSourceMaps, - new: jest.fn(), - finalize: jest.fn(), - setCommits: jest.fn(), + new: vi.fn(), + finalize: vi.fn(), + setCommits: vi.fn(), newDeploy: mockCliNewDeploy, - }, - })); -}); + }; + }, +})); -// eslint-disable-next-line @typescript-eslint/no-unsafe-return -jest.mock("../src/sentry/telemetry", () => ({ - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - ...jest.requireActual("../src/sentry/telemetry"), - safeFlushTelemetry: jest.fn(), +vi.mock("../src/sentry/telemetry", async () => ({ + ...(await vi.importActual("../src/sentry/telemetry")), + safeFlushTelemetry: vi.fn(), })); -// eslint-disable-next-line @typescript-eslint/no-unsafe-return -jest.mock("@sentry/core", () => ({ - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - ...jest.requireActual("@sentry/core"), - startSpan: jest.fn((options: unknown, callback: () => unknown) => callback()), +vi.mock("@sentry/core", async () => ({ + ...(await vi.importActual("@sentry/core")), + startSpan: vi.fn((options: unknown, callback: () => unknown) => callback()), })); -jest.mock("glob"); -jest.mock("../src/debug-id-upload"); +vi.mock("glob"); +vi.mock("../src/debug-id-upload"); -const mockGlob = glob as jest.MockedFunction; -const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as jest.MockedFunction< - typeof prepareBundleForDebugIdUpload ->; +const mockGlob = glob as unknown as MockedFunction; +const mockPrepareBundleForDebugIdUpload = + prepareBundleForDebugIdUpload as unknown as MockedFunction; describe("createSentryBuildPluginManager", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.resetAllMocks(); // Clean up environment variables delete process.env["SENTRY_LOG_LEVEL"]; }); @@ -236,11 +234,11 @@ describe("createSentryBuildPluginManager", () => { }); it("does not log anything to the console", () => { - const logSpy = jest.spyOn(console, "log"); - const infoSpy = jest.spyOn(console, "info"); - const debugSpy = jest.spyOn(console, "debug"); - const warnSpy = jest.spyOn(console, "warn"); - const errorSpy = jest.spyOn(console, "error"); + const logSpy = vi.spyOn(console, "log"); + const infoSpy = vi.spyOn(console, "info"); + const debugSpy = vi.spyOn(console, "debug"); + const warnSpy = vi.spyOn(console, "warn"); + const errorSpy = vi.spyOn(console, "error"); createSentryBuildPluginManager( { @@ -387,10 +385,10 @@ describe("createSentryBuildPluginManager", () => { mockGlob.mockResolvedValue(["/app/dist/a.js", "/app/dist/a.js.map", "/app/dist/other.txt"]); - jest.spyOn(fs.promises, "mkdtemp").mockResolvedValue("/tmp/sentry-upload-xyz"); - jest.spyOn(fs.promises, "readdir").mockResolvedValue(["a.js", "a.js.map"] as never); - jest.spyOn(fs.promises, "stat").mockResolvedValue({ size: 10 } as fs.Stats); - jest.spyOn(fs.promises, "rm").mockResolvedValue(undefined as never); + vi.spyOn(fs.promises, "mkdtemp").mockResolvedValue("/tmp/sentry-upload-xyz"); + vi.spyOn(fs.promises, "readdir").mockResolvedValue(["a.js", "a.js.map"] as never); + vi.spyOn(fs.promises, "stat").mockResolvedValue({ size: 10 } as fs.Stats); + vi.spyOn(fs.promises, "rm").mockResolvedValue(undefined as never); mockPrepareBundleForDebugIdUpload.mockResolvedValue(undefined); @@ -471,20 +469,20 @@ describe("createSentryBuildPluginManager", () => { describe("uploadSourcemaps with multiple projects", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); mockGlob.mockResolvedValue(["/path/to/bundle.js"]); mockPrepareBundleForDebugIdUpload.mockResolvedValue(undefined); mockCliUploadSourceMaps.mockResolvedValue(undefined); // Mock fs operations needed for temp folder upload path - jest.spyOn(fs.promises, "mkdtemp").mockResolvedValue("/tmp/sentry-test"); - jest.spyOn(fs.promises, "readdir").mockResolvedValue([]); - jest.spyOn(fs.promises, "stat").mockResolvedValue({ size: 1000 } as fs.Stats); - jest.spyOn(fs.promises, "rm").mockResolvedValue(undefined); + vi.spyOn(fs.promises, "mkdtemp").mockResolvedValue("/tmp/sentry-test"); + vi.spyOn(fs.promises, "readdir").mockResolvedValue([]); + vi.spyOn(fs.promises, "stat").mockResolvedValue({ size: 1000 } as fs.Stats); + vi.spyOn(fs.promises, "rm").mockResolvedValue(undefined); }); afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); it("should pass projects array to uploadSourceMaps when multiple projects configured", async () => { @@ -564,7 +562,7 @@ describe("createSentryBuildPluginManager", () => { describe("moduleMetadata callback with multiple projects", () => { it("should pass project as string and projects as array when multiple projects configured", () => { - const moduleMetadataCallback = jest.fn().mockReturnValue({ custom: "metadata" }); + const moduleMetadataCallback = vi.fn().mockReturnValue({ custom: "metadata" }); createSentryBuildPluginManager( { @@ -589,7 +587,7 @@ describe("createSentryBuildPluginManager", () => { }); it("should pass project as string and projects as array with single project", () => { - const moduleMetadataCallback = jest.fn().mockReturnValue({ custom: "metadata" }); + const moduleMetadataCallback = vi.fn().mockReturnValue({ custom: "metadata" }); createSentryBuildPluginManager( { @@ -614,7 +612,7 @@ describe("createSentryBuildPluginManager", () => { }); it("should pass undefined for projects when no project configured", () => { - const moduleMetadataCallback = jest.fn().mockReturnValue({ custom: "metadata" }); + const moduleMetadataCallback = vi.fn().mockReturnValue({ custom: "metadata" }); createSentryBuildPluginManager( { @@ -640,7 +638,7 @@ describe("createSentryBuildPluginManager", () => { describe("createRelease deploy deduplication", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); _resetDeployedReleasesForTesting(); }); diff --git a/packages/bundler-plugin-core/test/index.test.ts b/packages/bundler-plugin-core/test/index.test.ts index 45cf107d..fe4c03f0 100644 --- a/packages/bundler-plugin-core/test/index.test.ts +++ b/packages/bundler-plugin-core/test/index.test.ts @@ -1,11 +1,12 @@ import { getDebugIdSnippet } from "../src"; import { containsOnlyImports } from "../src/utils"; +import { describe, it, expect } from "vitest"; describe("getDebugIdSnippet", () => { it("returns the debugId injection snippet for a passed debugId", () => { const snippet = getDebugIdSnippet("1234"); expect(snippet.code()).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"1234\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-1234\\");}catch(e){}}();"` + `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1234",e._sentryDebugIdIdentifier="sentry-dbid-1234");}catch(e){}}();"` ); }); }); diff --git a/packages/bundler-plugin-core/test/option-mappings.test.ts b/packages/bundler-plugin-core/test/option-mappings.test.ts index 921bcd1e..d0756314 100644 --- a/packages/bundler-plugin-core/test/option-mappings.test.ts +++ b/packages/bundler-plugin-core/test/option-mappings.test.ts @@ -1,5 +1,6 @@ import { Options } from "../src"; import { NormalizedOptions, normalizeUserOptions, validateOptions } from "../src/options-mapping"; +import { describe, it, test, expect, afterEach, vi, beforeEach } from "vitest"; describe("normalizeUserOptions()", () => { test("should return correct value for default input", () => { @@ -256,14 +257,14 @@ describe("normalizeUserOptions()", () => { describe("validateOptions", () => { const mockedLogger = { - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), + debug: vi.fn(), + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), }; afterEach(() => { - jest.resetAllMocks(); + vi.resetAllMocks(); }); it("should return `true` if `injectRelease` is `true` and org is provided", () => { diff --git a/packages/bundler-plugin-core/test/sentry/logger.test.ts b/packages/bundler-plugin-core/test/sentry/logger.test.ts index d63d3bcd..1bb5d414 100644 --- a/packages/bundler-plugin-core/test/sentry/logger.test.ts +++ b/packages/bundler-plugin-core/test/sentry/logger.test.ts @@ -1,10 +1,11 @@ import { createLogger } from "../../src/logger"; +import { describe, it, expect, vi, afterEach } from "vitest"; describe("Logger", () => { - const consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => undefined); - const consoleInfoSpy = jest.spyOn(console, "info").mockImplementation(() => undefined); - const consoleWarnSpy = jest.spyOn(console, "warn").mockImplementation(() => undefined); - const consoleDebugSpy = jest.spyOn(console, "debug").mockImplementation(() => undefined); + const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => undefined); + const consoleInfoSpy = vi.spyOn(console, "info").mockImplementation(() => undefined); + const consoleWarnSpy = vi.spyOn(console, "warn").mockImplementation(() => undefined); + const consoleDebugSpy = vi.spyOn(console, "debug").mockImplementation(() => undefined); afterEach(() => { consoleErrorSpy.mockReset(); diff --git a/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts b/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts index b8e5c309..8a9530f8 100644 --- a/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts +++ b/packages/bundler-plugin-core/test/sentry/resolve-source-maps.test.ts @@ -3,6 +3,7 @@ import * as fs from "fs"; import * as url from "url"; import { determineSourceMapPathFromBundle } from "../../src/debug-id-upload"; import { createLogger } from "../../src/logger"; +import { describe, it, expect, vi } from "vitest"; const logger = createLogger({ prefix: "[resolve-source-maps-test]", silent: false, debug: false }); const fixtureDir = path.resolve(__dirname, "../fixtures/resolve-source-maps"); @@ -104,7 +105,7 @@ describe("Resolve source maps", () => { }); it("should pass the correct values to the resolveSourceMap hook", async () => { - const hook = jest.fn(() => separateSourceMapPath); + const hook = vi.fn(() => separateSourceMapPath); expect( await determineSourceMapPathFromBundle( separateBundlePath, @@ -117,7 +118,7 @@ describe("Resolve source maps", () => { }); it("should pass the correct values to the resolveSourceMap hook when no sourceMappingURL is present", async () => { - const hook = jest.fn(() => separateSourceMapPath); + const hook = vi.fn(() => separateSourceMapPath); expect( await determineSourceMapPathFromBundle( separateBundlePath, diff --git a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts index 77b977a1..0c4ee3a1 100644 --- a/packages/bundler-plugin-core/test/sentry/telemetry.test.ts +++ b/packages/bundler-plugin-core/test/sentry/telemetry.test.ts @@ -1,19 +1,21 @@ import { Scope } from "@sentry/core"; import { NormalizedOptions, normalizeUserOptions } from "../../src/options-mapping"; import { allowedToSendTelemetry, setTelemetryDataOnScope } from "../../src/sentry/telemetry"; +import { describe, it, expect, afterEach, beforeEach, vi } from "vitest"; -const mockCliExecute = jest.fn(); -jest.mock( - "@sentry/cli", - () => - class { - execute = mockCliExecute; - } -); +const { mockCliExecute } = vi.hoisted(() => ({ + mockCliExecute: vi.fn(), +})); + +vi.mock("@sentry/cli", () => ({ + default: class { + execute = mockCliExecute; + }, +})); describe("shouldSendTelemetry", () => { afterEach(() => { - jest.resetAllMocks(); + vi.resetAllMocks(); }); it("should return false if CLI returns a URL other than sentry.io", async () => { @@ -33,9 +35,9 @@ describe("shouldSendTelemetry", () => { describe("addPluginOptionTagsToScope", () => { const mockedScope = { - setTag: jest.fn(), - setTags: jest.fn(), - setUser: jest.fn(), + setTag: vi.fn(), + setTags: vi.fn(), + setUser: vi.fn(), }; const defaultOptions = { @@ -43,7 +45,7 @@ describe("addPluginOptionTagsToScope", () => { }; beforeEach(() => { - jest.resetAllMocks(); + vi.resetAllMocks(); }); it("should set include tag according to number of entries (single entry)", () => { diff --git a/packages/bundler-plugin-core/test/tsconfig.json b/packages/bundler-plugin-core/test/tsconfig.json index 20225819..190ab954 100644 --- a/packages/bundler-plugin-core/test/tsconfig.json +++ b/packages/bundler-plugin-core/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./*.ts", "./sentry/**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index df2bbc94..11a32135 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -10,7 +10,7 @@ import { } from "../src/utils"; import fs from "fs"; - +import { describe, it, expect, test, vi } from "vitest"; import path from "node:path"; type PackageJson = Record; @@ -232,7 +232,7 @@ describe("generateReleaseInjectorCode", () => { }); it("generates code with release and build information", () => { - jest.spyOn(fs, "readFileSync").mockReturnValueOnce( + vi.spyOn(fs, "readFileSync").mockReturnValueOnce( JSON.stringify({ name: "test-app", dependencies: { diff --git a/packages/dev-utils/.eslintrc.js b/packages/dev-utils/.eslintrc.js index 86e33dac..0bb8feae 100644 --- a/packages/dev-utils/.eslintrc.js +++ b/packages/dev-utils/.eslintrc.js @@ -1,5 +1,3 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, @@ -12,9 +10,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/e2e-tests/.eslintrc.js b/packages/e2e-tests/.eslintrc.js index 0b67f986..025905dc 100644 --- a/packages/e2e-tests/.eslintrc.js +++ b/packages/e2e-tests/.eslintrc.js @@ -1,16 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [ - ".eslintrc.js", - "scenarios/*/out", - "scenarios/*/ref", - "scenarios/*/input", - "jest.config.js", - ], + ignorePatterns: [".eslintrc.js", "scenarios/*/out", "scenarios/*/ref", "scenarios/*/input"], parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], @@ -18,11 +10,6 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, rules: { "no-console": "off", "@typescript-eslint/explicit-function-return-type": "off", diff --git a/packages/e2e-tests/jest.config.js b/packages/e2e-tests/jest.config.js deleted file mode 100644 index 160178bb..00000000 --- a/packages/e2e-tests/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index c21cd238..00eee9c2 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -4,9 +4,9 @@ "license": "MIT", "private": true, "scripts": { - "test": "run-s test:setup test:jest", + "test": "run-s test:setup test:e2e", "test:setup": "ts-node scripts/run-scenario-setups.ts", - "test:jest": "jest", + "test:e2e": "vitest run", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", "clean:all": "run-p clean clean:deps", @@ -24,15 +24,13 @@ "devDependencies": { "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", - "@swc/jest": "^0.2.21", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", - "@types/jest": "^28.1.3", "@types/webpack4": "npm:@types/webpack@^4", "esbuild": "0.14.49", "eslint": "^8.18.0", "glob": "8.0.3", - "jest": "^28.1.3", + "vitest": "^4.0.0", "premove": "^4.0.0", "rollup": "3.2.0", "ts-node": "^10.9.1", diff --git a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts index 6a3f90b8..3626dc73 100644 --- a/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts +++ b/packages/e2e-tests/scenarios/basic-upload/basic-upload.test.ts @@ -1,6 +1,7 @@ import { pluginConfig } from "./config"; import { BUNDLERS } from "../../utils/bundlers"; import { getSentryReleaseFiles } from "../../utils/releases"; +import { describe, expect, it } from "vitest"; describe("Simple Sourcemaps Upload (one string include + default options)", () => { it.each(BUNDLERS)("uploads the correct files using %s", async (bundler) => { diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index c66cdd45..727181f6 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -43,7 +43,7 @@ export function createCjsBundles( sentryPluginOptions.release.uploadLegacySourcemaps as string }/vite`, }, - }), + }) as unknown as vite.Plugin, ], }); diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js index ec106820..bc838aa0 100644 --- a/packages/esbuild-plugin/.eslintrc.js +++ b/packages/esbuild-plugin/.eslintrc.js @@ -1,10 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], + ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], @@ -13,9 +11,4 @@ module.exports = { node: true, es6: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/esbuild-plugin/jest.config.js b/packages/esbuild-plugin/jest.config.js deleted file mode 100644 index a04cbd13..00000000 --- a/packages/esbuild-plugin/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, - moduleNameMapper: { - uuid: require.resolve("uuid"), // https://stackoverflow.com/a/73203803 - }, -}; diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 9e47ed3b..06578b70 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -43,7 +43,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" }, @@ -55,12 +55,10 @@ "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", diff --git a/packages/esbuild-plugin/test/public-api.test.ts b/packages/esbuild-plugin/test/public-api.test.ts index c9408006..6a095c87 100644 --- a/packages/esbuild-plugin/test/public-api.test.ts +++ b/packages/esbuild-plugin/test/public-api.test.ts @@ -1,5 +1,6 @@ import { sentryEsbuildPlugin } from "../src"; import { Plugin } from "esbuild"; +import { describe, it, expect, test } from "vitest"; test("Esbuild plugin should exist", () => { expect(sentryEsbuildPlugin).toBeDefined(); diff --git a/packages/esbuild-plugin/test/tsconfig.json b/packages/esbuild-plugin/test/tsconfig.json index b73d9b53..b2d8716f 100644 --- a/packages/esbuild-plugin/test/tsconfig.json +++ b/packages/esbuild-plugin/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts index 4d53ff98..8c6715b2 100644 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-vite.ts @@ -17,5 +17,5 @@ void vite.build({ }, }, }, - plugins: [sentryVitePlugin(pluginOptions)], + plugins: [sentryVitePlugin(pluginOptions) as unknown as vite.Plugin], }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-vite.ts b/packages/integration-tests/fixtures/errorhandling/build-vite.ts index a5489beb..f16e75ba 100644 --- a/packages/integration-tests/fixtures/errorhandling/build-vite.ts +++ b/packages/integration-tests/fixtures/errorhandling/build-vite.ts @@ -18,7 +18,7 @@ vite }, }, }, - plugins: [sentryVitePlugin(pluginOptions)], + plugins: [sentryVitePlugin(pluginOptions) as unknown as vite.Plugin], }) .catch((e) => { // eslint-disable-next-line no-console diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 75397718..73226ecb 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -112,7 +112,7 @@ test("rollup bundle telemetry", async () => { "react-annotate": false, "meta-framework": "none", "application-key-set": false, - "bundler-major-version": "3", + "bundler-major-version": "4", bundler: "rollup", }), sdk: expect.objectContaining({ diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts index fc9b426d..04c3eddd 100644 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/build-vite-with-plugin.ts @@ -23,6 +23,6 @@ void vite.build({ sentryVitePlugin({ telemetry: false, // Empty options - the issue says options don't affect the results - }), + }) as unknown as vite.Plugin, ], }); diff --git a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts index 095784e8..21f116d5 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts @@ -38,7 +38,10 @@ export function createCjsBundles( }, }, }, - plugins: [react({ jsxRuntime: "automatic" }), sentryVitePlugin(sentryPluginOptions)], + plugins: [ + react({ jsxRuntime: "automatic" }), + sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin, + ], }); } if (plugins.length === 0 || plugins.includes("rollup")) { diff --git a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts index 59b54994..a16d2c21 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts @@ -31,7 +31,7 @@ export function createCjsBundlesWithQueryParam( }, }, }, - plugins: [sentryVitePlugin(sentryPluginOptions)], + plugins: [sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin], }); } if (plugins.length === 0 || plugins.includes("rollup")) { diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index 631fa288..b763a634 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -34,7 +34,7 @@ export function createCjsBundles( }, }, }, - plugins: [sentryVitePlugin(sentryPluginOptions)], + plugins: [sentryVitePlugin(sentryPluginOptions) as unknown as vite.Plugin], }); } diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js index 6eebd0fc..65bef845 100644 --- a/packages/rollup-plugin/.eslintrc.js +++ b/packages/rollup-plugin/.eslintrc.js @@ -1,10 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], + ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], @@ -12,9 +10,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/rollup-plugin/jest.config.js b/packages/rollup-plugin/jest.config.js deleted file mode 100644 index 160178bb..00000000 --- a/packages/rollup-plugin/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 9b84a0a7..dd0bbd54 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -44,7 +44,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" }, @@ -59,11 +59,9 @@ "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", diff --git a/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap b/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap new file mode 100644 index 00000000..88fcdc57 --- /dev/null +++ b/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap @@ -0,0 +1,11 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Hooks > renderChunk > should process file 'bundle.cjs': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; + +exports[`Hooks > renderChunk > should process file 'bundle.js#hash': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; + +exports[`Hooks > renderChunk > should process file 'bundle.js': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; + +exports[`Hooks > renderChunk > should process file 'bundle.js?foo=bar': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; + +exports[`Hooks > renderChunk > should process file 'bundle.mjs': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index e470d965..ad1fd004 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -1,5 +1,6 @@ import { sentryRollupPlugin } from "../src"; import { Plugin, SourceMap } from "rollup"; +import { describe, it, expect, test, beforeEach, vi } from "vitest"; test("Rollup plugin should exist", () => { expect(sentryRollupPlugin).toBeDefined(); @@ -8,7 +9,7 @@ test("Rollup plugin should exist", () => { describe("sentryRollupPlugin", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("returns an array of rollup plugins (although only one)", () => { @@ -43,7 +44,7 @@ describe("Hooks", () => { expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"d4309f93-5358-4ae1-bcf0-3813aa590eb5\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-d4309f93-5358-4ae1-bcf0-3813aa590eb5\\");}catch(e){}}();console.log(\\"Hello world\\");"` + `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d4309f93-5358-4ae1-bcf0-3813aa590eb5",e._sentryDebugIdIdentifier="sentry-dbid-d4309f93-5358-4ae1-bcf0-3813aa590eb5");}catch(e){}}();console.log("Hello world");"` ); }); @@ -53,8 +54,8 @@ describe("Hooks", () => { expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - "\\"use strict\\";!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"79a86c07-8ecc-4367-82b0-88cf822f2d41\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-79a86c07-8ecc-4367-82b0-88cf822f2d41\\");}catch(e){}}(); - console.log(\\"Hello world\\");" + ""use strict";!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="79a86c07-8ecc-4367-82b0-88cf822f2d41",e._sentryDebugIdIdentifier="sentry-dbid-79a86c07-8ecc-4367-82b0-88cf822f2d41");}catch(e){}}(); + console.log("Hello world");" `); }); @@ -69,9 +70,7 @@ describe("Hooks", () => { const result = renderChunk(code, { fileName }); expect(result).not.toBeNull(); - expect(result?.code).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"b80112c0-6818-486d-96f0-185c023439b4\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4\\");}catch(e){}}();console.log(\\"test\\");"` - ); + expect(result?.code).toMatchSnapshot(); }); it.each([["index.html"], ["styles.css"]])("should NOT process file '%s': %s", (fileName) => { @@ -152,7 +151,7 @@ export * from './moduleC.js';`, }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"c4c89e04-3658-4874-b25b-07e638185091\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-c4c89e04-3658-4874-b25b-07e638185091\\");}catch(e){}}();function main() { console.log(\\"hello\\"); }"` + `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c4c89e04-3658-4874-b25b-07e638185091",e._sentryDebugIdIdentifier="sentry-dbid-c4c89e04-3658-4874-b25b-07e638185091");}catch(e){}}();function main() { console.log("hello"); }"` ); }); @@ -163,7 +162,7 @@ export * from './moduleC.js';`, }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"43e69766-1963-49f2-a291-ff8de60cc652\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-43e69766-1963-49f2-a291-ff8de60cc652\\");}catch(e){}}();const x = 42;"` + `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="43e69766-1963-49f2-a291-ff8de60cc652",e._sentryDebugIdIdentifier="sentry-dbid-43e69766-1963-49f2-a291-ff8de60cc652");}catch(e){}}();const x = 42;"` ); }); @@ -183,7 +182,7 @@ bootstrap();`; }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - "!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"d0c4524b-496e-45a4-9852-7558d043ba3c\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-d0c4524b-496e-45a4-9852-7558d043ba3c\\");}catch(e){}}();import { initApp } from './app.js'; + "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d0c4524b-496e-45a4-9852-7558d043ba3c",e._sentryDebugIdIdentifier="sentry-dbid-d0c4524b-496e-45a4-9852-7558d043ba3c");}catch(e){}}();import { initApp } from './app.js'; const config = { debug: true }; @@ -202,7 +201,7 @@ bootstrap();`; ); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot(` - "!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"28f0bbaa-9aeb-40c4-98c9-4e44f1d4e175\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-28f0bbaa-9aeb-40c4-98c9-4e44f1d4e175\\");}catch(e){}}();import './polyfills.js'; + "!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="28f0bbaa-9aeb-40c4-98c9-4e44f1d4e175",e._sentryDebugIdIdentifier="sentry-dbid-28f0bbaa-9aeb-40c4-98c9-4e44f1d4e175");}catch(e){}}();import './polyfills.js'; import { init } from './app.js'; init();" @@ -213,7 +212,7 @@ bootstrap();`; const result = renderChunk(`console.log("Hello");`, { fileName: "bundle.js" }); expect(result).not.toBeNull(); expect(result?.code).toMatchInlineSnapshot( - `"!function(){try{var e=\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof globalThis?globalThis:\\"undefined\\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\\"79f18a7f-ca16-4168-9797-906c82058367\\",e._sentryDebugIdIdentifier=\\"sentry-dbid-79f18a7f-ca16-4168-9797-906c82058367\\");}catch(e){}}();console.log(\\"Hello\\");"` + `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="79f18a7f-ca16-4168-9797-906c82058367",e._sentryDebugIdIdentifier="sentry-dbid-79f18a7f-ca16-4168-9797-906c82058367");}catch(e){}}();console.log("Hello");"` ); }); }); diff --git a/packages/rollup-plugin/test/tsconfig.json b/packages/rollup-plugin/test/tsconfig.json index b73d9b53..b2d8716f 100644 --- a/packages/rollup-plugin/test/tsconfig.json +++ b/packages/rollup-plugin/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js index 6eebd0fc..65bef845 100644 --- a/packages/vite-plugin/.eslintrc.js +++ b/packages/vite-plugin/.eslintrc.js @@ -1,10 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], + ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], @@ -12,9 +10,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/vite-plugin/jest.config.js b/packages/vite-plugin/jest.config.js deleted file mode 100644 index 160178bb..00000000 --- a/packages/vite-plugin/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, -}; diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 39f77835..29a1e914 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -43,7 +43,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" }, @@ -55,11 +55,9 @@ "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index cfa3856d..e0d3a792 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -21,7 +21,7 @@ export const sentryVitePlugin = (options?: SentryRollupPluginOptions): Plugin[] return [ { enforce: "pre", - ..._rollupPluginInternal(options, "vite", getViteMajorVersion()), + ...(_rollupPluginInternal(options, "vite", getViteMajorVersion()) as Plugin), }, ]; }; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index cc709292..285cb4ce 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -1,4 +1,5 @@ import { sentryVitePlugin } from "../src"; +import { describe, it, expect, test, beforeEach, vi } from "vitest"; test("Vite plugin should exist", () => { expect(sentryVitePlugin).toBeDefined(); @@ -7,7 +8,7 @@ test("Vite plugin should exist", () => { describe("sentryVitePlugin", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("returns an array of Vite plugins", () => { diff --git a/packages/vite-plugin/test/tsconfig.json b/packages/vite-plugin/test/tsconfig.json index b73d9b53..b2d8716f 100644 --- a/packages/vite-plugin/test/tsconfig.json +++ b/packages/vite-plugin/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js index 6eebd0fc..10789a5d 100644 --- a/packages/webpack-plugin/.eslintrc.js +++ b/packages/webpack-plugin/.eslintrc.js @@ -4,7 +4,7 @@ const jestPackageJson = require("jest/package.json"); module.exports = { root: true, extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [".eslintrc.js", "dist", "jest.config.js", "rollup.config.mjs"], + ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, project: ["./src/tsconfig.json", "./test/tsconfig.json"], @@ -12,9 +12,4 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, }; diff --git a/packages/webpack-plugin/jest.config.js b/packages/webpack-plugin/jest.config.js deleted file mode 100644 index a04cbd13..00000000 --- a/packages/webpack-plugin/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, - moduleNameMapper: { - uuid: require.resolve("uuid"), // https://stackoverflow.com/a/73203803 - }, -}; diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 2e623a7d..094a1dd7 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -48,7 +48,7 @@ "clean:all": "run-p clean clean:deps", "clean:build": "premove ./dist *.tgz", "clean:deps": "premove node_modules", - "test": "jest", + "test": "vitest run", "lint": "eslint ./src ./test", "prepack": "ts-node ./src/prepack.ts" }, @@ -60,13 +60,11 @@ "@sentry-internal/eslint-config": "4.9.1", "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@swc/core": "^1.2.205", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "@types/webpack": "npm:@types/webpack@^4", "eslint": "^8.18.0", - "jest": "^28.1.1", + "vitest": "^4.0.0", "premove": "^4.0.0", "rolldown": "^1.0.0-rc.4", "ts-node": "^10.9.1", diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index 3340b2f1..b03720e7 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,5 +1,6 @@ import { Plugin } from "webpack"; import { sentryWebpackPlugin } from "../src"; +import { describe, it, expect, test } from "vitest"; test("Webpack plugin should exist", () => { expect(sentryWebpackPlugin).toBeDefined(); diff --git a/packages/webpack-plugin/test/tsconfig.json b/packages/webpack-plugin/test/tsconfig.json index b73d9b53..b2d8716f 100644 --- a/packages/webpack-plugin/test/tsconfig.json +++ b/packages/webpack-plugin/test/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../src/tsconfig.json", "include": ["../src/**/*", "./**/*"], "compilerOptions": { - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/webpack-plugin/test/webpack5.test.ts b/packages/webpack-plugin/test/webpack5.test.ts index 09d7df05..34a242f6 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -1,7 +1,8 @@ import { Plugin } from "webpack"; import { sentryWebpackPlugin } from "../src/webpack5"; +import { describe, it, expect, test, vi } from "vitest"; -jest.mock("webpack", () => { +vi.mock("webpack", () => { throw new Error("Webpack 5 version of the plugin should use module from compiler."); }); diff --git a/yarn.lock b/yarn.lock index 1df6471c..7280a576 100644 --- a/yarn.lock +++ b/yarn.lock @@ -413,6 +413,11 @@ dependencies: tslib "^2.4.0" +"@esbuild/aix-ppc64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz#815b39267f9bffd3407ea6c376ac32946e24f8d2" + integrity sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg== + "@esbuild/android-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" @@ -423,6 +428,11 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz#74752a09301b8c6b9a415fbda9fb71406a62a7b7" integrity sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg== +"@esbuild/android-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz#19b882408829ad8e12b10aff2840711b2da361e8" + integrity sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg== + "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" @@ -433,6 +443,11 @@ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz#c27363e1e280e577d9b5c8fa7c7a3be2a8d79bf5" integrity sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ== +"@esbuild/android-arm@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz#90be58de27915efa27b767fcbdb37a4470627d7b" + integrity sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA== + "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" @@ -443,6 +458,11 @@ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz#6c9ee03d1488973d928618100048b75b147e0426" integrity sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g== +"@esbuild/android-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz#d7dcc976f16e01a9aaa2f9b938fbec7389f895ac" + integrity sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" @@ -453,6 +473,11 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz#64e2ee945e5932cd49812caa80e8896e937e2f8b" integrity sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA== +"@esbuild/darwin-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz#9f6cac72b3a8532298a6a4493ed639a8988e8abd" + integrity sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg== + "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" @@ -463,6 +488,11 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz#d8e26e1b965df284692e4d1263ba69a49b39ac7a" integrity sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw== +"@esbuild/darwin-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz#ac61d645faa37fd650340f1866b0812e1fb14d6a" + integrity sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg== + "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" @@ -473,6 +503,11 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz#29751a41b242e0a456d89713b228f1da4f45582f" integrity sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ== +"@esbuild/freebsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz#b8625689d73cf1830fe58c39051acdc12474ea1b" + integrity sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w== + "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" @@ -483,6 +518,11 @@ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz#873edc0f73e83a82432460ea59bf568c1e90b268" integrity sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw== +"@esbuild/freebsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz#07be7dd3c9d42fe0eccd2ab9f9ded780bc53bead" + integrity sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA== + "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" @@ -493,6 +533,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz#659f2fa988d448dbf5010b5cc583be757cc1b914" integrity sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA== +"@esbuild/linux-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz#bf31918fe5c798586460d2b3d6c46ed2c01ca0b6" + integrity sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg== + "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" @@ -503,6 +548,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz#d5b13a7ec1f1c655ce05c8d319b3950797baee55" integrity sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg== +"@esbuild/linux-arm@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz#28493ee46abec1dc3f500223cd9f8d2df08f9d11" + integrity sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw== + "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" @@ -513,6 +563,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz#878cd8bf24c9847c77acdb5dd1b2ef6e4fa27a82" integrity sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ== +"@esbuild/linux-ia32@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz#750752a8b30b43647402561eea764d0a41d0ee29" + integrity sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg== + "@esbuild/linux-loong64@0.14.54": version "0.14.54" resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" @@ -528,6 +583,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz#df890499f6e566b7de3aa2361be6df2b8d5fa015" integrity sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg== +"@esbuild/linux-loong64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz#a5a92813a04e71198c50f05adfaf18fc1e95b9ed" + integrity sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA== + "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" @@ -538,6 +598,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz#76eae4e88d2ce9f4f1b457e93892e802851b6807" integrity sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw== +"@esbuild/linux-mips64el@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz#deb45d7fd2d2161eadf1fbc593637ed766d50bb1" + integrity sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw== + "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" @@ -548,6 +613,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz#c49032f4abbcfa3f747b543a106931fe3dce41ff" integrity sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw== +"@esbuild/linux-ppc64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz#6f39ae0b8c4d3d2d61a65b26df79f6e12a1c3d78" + integrity sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA== + "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" @@ -558,6 +628,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz#0f815a090772138503ee0465a747e16865bf94b1" integrity sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig== +"@esbuild/linux-riscv64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz#4c5c19c3916612ec8e3915187030b9df0b955c1d" + integrity sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ== + "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" @@ -568,6 +643,11 @@ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz#8d2cca20cd4e7c311fde8701d9f1042664f8b92b" integrity sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg== +"@esbuild/linux-s390x@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz#9ed17b3198fa08ad5ccaa9e74f6c0aff7ad0156d" + integrity sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw== + "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" @@ -578,6 +658,16 @@ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz#f618bec2655de49bff91c588777e37b5e3169d4a" integrity sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg== +"@esbuild/linux-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz#12383dcbf71b7cf6513e58b4b08d95a710bf52a5" + integrity sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA== + +"@esbuild/netbsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz#dd0cb2fa543205fcd931df44f4786bfcce6df7d7" + integrity sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA== + "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" @@ -588,6 +678,16 @@ resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz#7889744ca4d60f1538d62382b95e90a49687cef2" integrity sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A== +"@esbuild/netbsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz#028ad1807a8e03e155153b2d025b506c3787354b" + integrity sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA== + +"@esbuild/openbsd-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz#e3c16ff3490c9b59b969fffca87f350ffc0e2af5" + integrity sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw== + "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" @@ -598,6 +698,16 @@ resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz#c3e436eb9271a423d2e8436fcb120e3fd90e2b01" integrity sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw== +"@esbuild/openbsd-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz#c5a4693fcb03d1cbecbf8b422422468dfc0d2a8b" + integrity sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ== + +"@esbuild/openharmony-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz#082082444f12db564a0775a41e1991c0e125055e" + integrity sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g== + "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" @@ -608,6 +718,11 @@ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz#f63f5841ba8c8c1a1c840d073afc99b53e8ce740" integrity sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw== +"@esbuild/sunos-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz#5ab036c53f929e8405c4e96e865a424160a1b537" + integrity sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA== + "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" @@ -618,6 +733,11 @@ resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz#80be69cec92da4da7781cf7a8351b95cc5a236b0" integrity sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w== +"@esbuild/win32-arm64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz#38de700ef4b960a0045370c171794526e589862e" + integrity sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA== + "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" @@ -628,6 +748,11 @@ resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz#15dc0ed83d2794872b05d8edc4a358fecf97eb54" integrity sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg== +"@esbuild/win32-ia32@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz#451b93dc03ec5d4f38619e6cd64d9f9eff06f55c" + integrity sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q== + "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" @@ -638,6 +763,11 @@ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz#d46a6e220a717f31f39ae80f49477cc3220be0f0" integrity sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA== +"@esbuild/win32-x64@0.27.3": + version "0.27.3" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz#0eaf705c941a218a43dba8e09f1df1d6cd2f1f17" + integrity sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1116,6 +1246,11 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1950,6 +2085,131 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz#add5e608d4e7be55bc3ca3d962490b8b1890e088" + integrity sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg== + +"@rollup/rollup-android-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz#10bd0382b73592beee6e9800a69401a29da625c4" + integrity sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w== + +"@rollup/rollup-darwin-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz#1e99ab04c0b8c619dd7bbde725ba2b87b55bfd81" + integrity sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg== + +"@rollup/rollup-darwin-x64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz#69e741aeb2839d2e8f0da2ce7a33d8bd23632423" + integrity sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w== + +"@rollup/rollup-freebsd-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz#3736c232a999c7bef7131355d83ebdf9651a0839" + integrity sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug== + +"@rollup/rollup-freebsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz#227dcb8f466684070169942bd3998901c9bfc065" + integrity sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz#ba004b30df31b724f99ce66e7128248bea17cb0c" + integrity sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw== + +"@rollup/rollup-linux-arm-musleabihf@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz#6929f3e07be6b6da5991f63c6b68b3e473d0a65a" + integrity sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw== + +"@rollup/rollup-linux-arm64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz#06e89fd4a25d21fe5575d60b6f913c0e65297bfa" + integrity sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g== + +"@rollup/rollup-linux-arm64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz#fddabf395b90990d5194038e6cd8c00156ed8ac0" + integrity sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q== + +"@rollup/rollup-linux-loong64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz#04c10bb764bbf09a3c1bd90432e92f58d6603c36" + integrity sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA== + +"@rollup/rollup-linux-loong64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz#f2450361790de80581d8687ea19142d8a4de5c0f" + integrity sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw== + +"@rollup/rollup-linux-ppc64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz#0474f4667259e407eee1a6d38e29041b708f6a30" + integrity sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w== + +"@rollup/rollup-linux-ppc64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz#9f32074819eeb1ddbe51f50ea9dcd61a6745ec33" + integrity sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw== + +"@rollup/rollup-linux-riscv64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz#3fdb9d4b1e29fb6b6a6da9f15654d42eb77b99b2" + integrity sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A== + +"@rollup/rollup-linux-riscv64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz#1de780d64e6be0e3e8762035c22e0d8ea68df8ed" + integrity sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw== + +"@rollup/rollup-linux-s390x-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz#1da022ffd2d9e9f0fd8344ea49e113001fbcac64" + integrity sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg== + +"@rollup/rollup-linux-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz#78c16eef9520bd10e1ea7a112593bb58e2842622" + integrity sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg== + +"@rollup/rollup-linux-x64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz#a7598591b4d9af96cb3167b50a5bf1e02dfea06c" + integrity sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw== + +"@rollup/rollup-openbsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz#c51d48c07cd6c466560e5bed934aec688ce02614" + integrity sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw== + +"@rollup/rollup-openharmony-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz#f09921d0b2a0b60afbf3586d2a7a7f208ba6df17" + integrity sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ== + +"@rollup/rollup-win32-arm64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz#08d491717135376e4a99529821c94ecd433d5b36" + integrity sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ== + +"@rollup/rollup-win32-ia32-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz#b0c12aac1104a8b8f26a5e0098e5facbb3e3964a" + integrity sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew== + +"@rollup/rollup-win32-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz#b9cccef26f5e6fdc013bf3c0911a3c77428509d0" + integrity sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ== + +"@rollup/rollup-win32-x64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz#a03348e7b559c792b6277cc58874b89ef46e1e72" + integrity sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA== + "@sentry-internal/tracing@7.50.0": version "7.50.0" resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.50.0.tgz#74454af99a03d81762993835d2687c881e14f41e" @@ -2122,6 +2382,11 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@standard-schema/spec@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== + "@swc/core-darwin-arm64@1.3.59": version "1.3.59" resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.59.tgz#04137eaf3549a2c195a4eeff409687379d927809" @@ -2294,6 +2559,14 @@ "@types/connect" "*" "@types/node" "*" +"@types/chai@^5.2.2": + version "5.2.3" + resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz#8e9cd9e1c3581fa6b341a5aed5588eb285be0b4a" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== + dependencies: + "@types/deep-eql" "*" + assertion-error "^2.0.1" + "@types/connect@*": version "3.4.35" resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2301,6 +2574,11 @@ dependencies: "@types/node" "*" +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2322,6 +2600,11 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -2696,6 +2979,64 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.0" +"@vitest/expect@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz#361510d99fbf20eb814222e4afcb8539d79dc94d" + integrity sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ== + dependencies: + "@standard-schema/spec" "^1.0.0" + "@types/chai" "^5.2.2" + "@vitest/spy" "4.0.18" + "@vitest/utils" "4.0.18" + chai "^6.2.1" + tinyrainbow "^3.0.3" + +"@vitest/mocker@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz#b9735da114ef65ea95652c5bdf13159c6fab4865" + integrity sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ== + dependencies: + "@vitest/spy" "4.0.18" + estree-walker "^3.0.3" + magic-string "^0.30.21" + +"@vitest/pretty-format@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz#fbccd4d910774072ec15463553edb8ca5ce53218" + integrity sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw== + dependencies: + tinyrainbow "^3.0.3" + +"@vitest/runner@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz#c2c0a3ed226ec85e9312f9cc8c43c5b3a893a8b1" + integrity sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw== + dependencies: + "@vitest/utils" "4.0.18" + pathe "^2.0.3" + +"@vitest/snapshot@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz#bcb40fd6d742679c2ac927ba295b66af1c6c34c5" + integrity sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA== + dependencies: + "@vitest/pretty-format" "4.0.18" + magic-string "^0.30.21" + pathe "^2.0.3" + +"@vitest/spy@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz#ba0f20503fb6d08baf3309d690b3efabdfa88762" + integrity sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw== + +"@vitest/utils@4.0.18": + version "4.0.18" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz#9636b16d86a4152ec68a8d6859cff702896433d4" + integrity sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA== + dependencies: + "@vitest/pretty-format" "4.0.18" + tinyrainbow "^3.0.3" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -3456,6 +3797,11 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -4012,6 +4358,11 @@ caniuse-lite@^1.0.30001580: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== +chai@^6.2.1: + version "6.2.2" + resolved "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz#ae41b52c9aca87734505362717f3255facda360e" + integrity sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg== + chalk@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -5056,6 +5407,11 @@ es-module-lexer@^1.2.1: resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== +es-module-lexer@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -5390,6 +5746,38 @@ esbuild@^0.14.47: esbuild-windows-64 "0.14.54" esbuild-windows-arm64 "0.14.54" +esbuild@^0.27.0: + version "0.27.3" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz#5859ca8e70a3af956b26895ce4954d7e73bd27a8" + integrity sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.27.3" + "@esbuild/android-arm" "0.27.3" + "@esbuild/android-arm64" "0.27.3" + "@esbuild/android-x64" "0.27.3" + "@esbuild/darwin-arm64" "0.27.3" + "@esbuild/darwin-x64" "0.27.3" + "@esbuild/freebsd-arm64" "0.27.3" + "@esbuild/freebsd-x64" "0.27.3" + "@esbuild/linux-arm" "0.27.3" + "@esbuild/linux-arm64" "0.27.3" + "@esbuild/linux-ia32" "0.27.3" + "@esbuild/linux-loong64" "0.27.3" + "@esbuild/linux-mips64el" "0.27.3" + "@esbuild/linux-ppc64" "0.27.3" + "@esbuild/linux-riscv64" "0.27.3" + "@esbuild/linux-s390x" "0.27.3" + "@esbuild/linux-x64" "0.27.3" + "@esbuild/netbsd-arm64" "0.27.3" + "@esbuild/netbsd-x64" "0.27.3" + "@esbuild/openbsd-arm64" "0.27.3" + "@esbuild/openbsd-x64" "0.27.3" + "@esbuild/openharmony-arm64" "0.27.3" + "@esbuild/sunos-x64" "0.27.3" + "@esbuild/win32-arm64" "0.27.3" + "@esbuild/win32-ia32" "0.27.3" + "@esbuild/win32-x64" "0.27.3" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -5582,6 +5970,13 @@ estree-walker@^2.0.2: resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5678,6 +6073,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect-type@^1.2.2: + version "1.3.0" + resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz#0d58ed361877a31bbc4dd6cf71bbfef7faf6bd68" + integrity sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== + expect@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" @@ -5825,6 +6225,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6108,6 +6513,11 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -7991,7 +8401,7 @@ jest-worker@^28.1.3: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.1, jest@^28.1.3: +jest@^28.1.3: version "28.1.3" resolved "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== @@ -8472,6 +8882,13 @@ magic-string@0.30.8, magic-string@^0.30.3: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + make-dir@3.1.0, make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -8966,6 +9383,11 @@ nan@^2.12.1: resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + nanoid@^3.3.6: version "3.3.8" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" @@ -9506,6 +9928,11 @@ object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" +obug@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz#2cba74ff241beb77d63055ddf4cd1e9f90b538be" + integrity sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -9926,6 +10353,11 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -9942,11 +10374,21 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -10013,6 +10455,15 @@ postcss@^8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10662,6 +11113,40 @@ rollup@^2.75.6: optionalDependencies: fsevents "~2.3.2" +rollup@^4.43.0: + version "4.57.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz#947f70baca32db2b9c594267fe9150aa316e5a88" + integrity sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.57.1" + "@rollup/rollup-android-arm64" "4.57.1" + "@rollup/rollup-darwin-arm64" "4.57.1" + "@rollup/rollup-darwin-x64" "4.57.1" + "@rollup/rollup-freebsd-arm64" "4.57.1" + "@rollup/rollup-freebsd-x64" "4.57.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.57.1" + "@rollup/rollup-linux-arm-musleabihf" "4.57.1" + "@rollup/rollup-linux-arm64-gnu" "4.57.1" + "@rollup/rollup-linux-arm64-musl" "4.57.1" + "@rollup/rollup-linux-loong64-gnu" "4.57.1" + "@rollup/rollup-linux-loong64-musl" "4.57.1" + "@rollup/rollup-linux-ppc64-gnu" "4.57.1" + "@rollup/rollup-linux-ppc64-musl" "4.57.1" + "@rollup/rollup-linux-riscv64-gnu" "4.57.1" + "@rollup/rollup-linux-riscv64-musl" "4.57.1" + "@rollup/rollup-linux-s390x-gnu" "4.57.1" + "@rollup/rollup-linux-x64-gnu" "4.57.1" + "@rollup/rollup-linux-x64-musl" "4.57.1" + "@rollup/rollup-openbsd-x64" "4.57.1" + "@rollup/rollup-openharmony-arm64" "4.57.1" + "@rollup/rollup-win32-arm64-msvc" "4.57.1" + "@rollup/rollup-win32-ia32-msvc" "4.57.1" + "@rollup/rollup-win32-x64-gnu" "4.57.1" + "@rollup/rollup-win32-x64-msvc" "4.57.1" + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -10919,6 +11404,11 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -11017,6 +11507,11 @@ source-map-js@^1.0.2: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -11144,6 +11639,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -11157,6 +11657,11 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +std-env@^3.10.0: + version "3.10.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" + integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -11554,11 +12059,34 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + +tinyexec@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz#bdd2737fe2ba40bd6f918ae26642f264b99ca251" + integrity sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== + +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + tinypool@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/tinypool/-/tinypool-2.1.0.tgz#303a671d6ef68d03c9512cdc9a47c86b8a85f20c" integrity sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw== +tinyrainbow@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz#984a5b1c1b25854a9b6bccbe77964d0593d1ea42" + integrity sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -12085,6 +12613,46 @@ vite@3.0.0: optionalDependencies: fsevents "~2.3.2" +"vite@^6.0.0 || ^7.0.0": + version "7.3.1" + resolved "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz#7f6cfe8fb9074138605e822a75d9d30b814d6507" + integrity sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== + dependencies: + esbuild "^0.27.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.15" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^4.0.0: + version "4.0.18" + resolved "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz#56f966353eca0b50f4df7540cd4350ca6d454a05" + integrity sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ== + dependencies: + "@vitest/expect" "4.0.18" + "@vitest/mocker" "4.0.18" + "@vitest/pretty-format" "4.0.18" + "@vitest/runner" "4.0.18" + "@vitest/snapshot" "4.0.18" + "@vitest/spy" "4.0.18" + "@vitest/utils" "4.0.18" + es-module-lexer "^1.7.0" + expect-type "^1.2.2" + magic-string "^0.30.21" + obug "^2.1.1" + pathe "^2.0.3" + picomatch "^4.0.3" + std-env "^3.10.0" + tinybench "^2.9.0" + tinyexec "^1.0.2" + tinyglobby "^0.2.15" + tinyrainbow "^3.0.3" + vite "^6.0.0 || ^7.0.0" + why-is-node-running "^2.3.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -12368,6 +12936,14 @@ which@^3.0.0: dependencies: isexe "^2.0.0" +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + wide-align@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" From e811f6774a93fc6ce4dcdadad8e09edebe2aaf5a Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 19 Feb 2026 15:43:25 +0000 Subject: [PATCH 02/11] again --- packages/integration-tests/fixtures/telemetry/telemetry.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 73226ecb..75397718 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -112,7 +112,7 @@ test("rollup bundle telemetry", async () => { "react-annotate": false, "meta-framework": "none", "application-key-set": false, - "bundler-major-version": "4", + "bundler-major-version": "3", bundler: "rollup", }), sdk: expect.objectContaining({ From 4ffc25b67188d37e59bba957a1e6ab3ed914623a Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 19 Feb 2026 16:27:13 +0000 Subject: [PATCH 03/11] we dont care about the version --- packages/integration-tests/fixtures/telemetry/telemetry.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index 75397718..c3eb5588 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -112,7 +112,7 @@ test("rollup bundle telemetry", async () => { "react-annotate": false, "meta-framework": "none", "application-key-set": false, - "bundler-major-version": "3", + "bundler-major-version": expect.any(String), bundler: "rollup", }), sdk: expect.objectContaining({ From d8d0b64c3cd0fa98b74e71351173c63d1634ff1c Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 01:48:00 +0000 Subject: [PATCH 04/11] more migrated --- .../.eslintrc.js | 2 +- packages/bundler-plugin-core/.eslintrc.js | 2 +- packages/e2e-tests/.eslintrc.js | 2 +- packages/e2e-tests/README.md | 4 +- packages/e2e-tests/package.json | 4 +- packages/e2e-tests/tsconfig.json | 2 +- packages/e2e-tests/utils/bundlers.ts | 2 +- .../e2e-tests/utils/create-cjs-bundles.ts | 35 +- packages/esbuild-plugin/.eslintrc.js | 2 +- packages/eslint-configs/jest.js | 13 - packages/eslint-configs/package.json | 1 - packages/integration-tests/.eslintrc.js | 16 +- packages/integration-tests/README.md | 2 +- .../after-upload-deletion.test.ts | 12 +- .../after-upload-deletion-promise/setup.ts | 2 +- .../after-upload-deletion.test.ts | 12 +- .../fixtures/after-upload-deletion/setup.ts | 2 +- .../metadata-injection.test.ts | 12 +- .../application-key-injection/setup.ts | 2 +- .../application-key-with-debug-id.test.ts | 12 +- .../application-key-with-debug-id/setup.ts | 2 +- .../basic-release-injection.test.ts | 11 +- .../build-information-injection.test.ts | 19 +- .../bundle-size-optimizations.test.ts | 21 +- ...mponent-name-annotate-experimental.test.ts | 27 +- .../component-name-annotate.test.ts | 27 +- .../debug-id-injection.test.ts | 17 +- .../debug-ids-already-injected.test.ts | 13 +- .../input/{webpack5 => webpack}/package.json | 0 .../{webpack5 => webpack}/webpack.config.js | 2 +- .../{build-webpack5.ts => build-webpack.ts} | 6 +- .../deterministic-debug-ids/build-webpack4.ts | 25 - .../deterministic-debug-ids.test.ts | 18 +- .../disabled-debug-id-injection.test.ts | 17 +- .../disabled-release-injection.test.ts | 11 +- .../dont-mess-up-user-code.test.ts | 11 +- .../{build-webpack5.ts => build-webpack.ts} | 6 +- .../fixtures/errorhandling/build-webpack4.ts | 26 - .../errorhandling/error-no-handler.test.ts | 15 +- .../esbuild-inject-compat.test.ts | 1 + .../injection-with-query-param.test.ts | 20 +- .../metadata-injection.test.ts | 12 +- .../fixtures/metadata-injection/setup.ts | 2 +- .../metadata-with-debug-id.test.ts | 12 +- .../fixtures/metadata-with-debug-id/setup.ts | 2 +- .../release-value-with-quotes.test.ts | 12 +- .../release-value-with-quotes/setup.ts | 2 +- .../fixtures/telemetry/telemetry.test.ts | 3 +- .../vite-mpa-extra-modules.test.ts | 1 + packages/integration-tests/jest.config.js | 7 - packages/integration-tests/package.json | 12 +- packages/integration-tests/tsconfig.json | 2 +- .../utils/create-cjs-bundles-for-react.ts | 55 +- .../utils/create-cjs-bundles-with-query.ts | 36 +- .../utils/create-cjs-bundles.ts | 37 +- packages/integration-tests/utils/testIf.ts | 27 - .../{build-webpack5.js => build-webpack.js} | 6 +- packages/playground/build-webpack4.js | 29 - packages/playground/package.json | 8 +- packages/rollup-plugin/.eslintrc.js | 2 +- packages/vite-plugin/.eslintrc.js | 2 +- packages/webpack-plugin/.eslintrc.js | 4 +- .../webpack-plugin/test/public-api.test.ts | 4 +- packages/webpack-plugin/test/webpack5.test.ts | 12 +- yarn.lock | 1174 ++++------------- 65 files changed, 422 insertions(+), 1477 deletions(-) delete mode 100644 packages/eslint-configs/jest.js rename packages/integration-tests/fixtures/debug-ids-already-injected/input/{webpack5 => webpack}/package.json (100%) rename packages/integration-tests/fixtures/debug-ids-already-injected/input/{webpack5 => webpack}/webpack.config.js (90%) rename packages/integration-tests/fixtures/deterministic-debug-ids/{build-webpack5.ts => build-webpack.ts} (80%) delete mode 100644 packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts rename packages/integration-tests/fixtures/errorhandling/{build-webpack5.ts => build-webpack.ts} (81%) delete mode 100644 packages/integration-tests/fixtures/errorhandling/build-webpack4.ts delete mode 100644 packages/integration-tests/jest.config.js delete mode 100644 packages/integration-tests/utils/testIf.ts rename packages/playground/{build-webpack5.js => build-webpack.js} (82%) delete mode 100644 packages/playground/build-webpack4.js diff --git a/packages/babel-plugin-component-annotate/.eslintrc.js b/packages/babel-plugin-component-annotate/.eslintrc.js index 421c7937..e616bbf5 100644 --- a/packages/babel-plugin-component-annotate/.eslintrc.js +++ b/packages/babel-plugin-component-annotate/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/bundler-plugin-core/.eslintrc.js b/packages/bundler-plugin-core/.eslintrc.js index 6f164899..3bd3df60 100644 --- a/packages/bundler-plugin-core/.eslintrc.js +++ b/packages/bundler-plugin-core/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [ ".eslintrc.js", "dist", diff --git a/packages/e2e-tests/.eslintrc.js b/packages/e2e-tests/.eslintrc.js index 025905dc..c0340602 100644 --- a/packages/e2e-tests/.eslintrc.js +++ b/packages/e2e-tests/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "scenarios/*/out", "scenarios/*/ref", "scenarios/*/input"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/e2e-tests/README.md b/packages/e2e-tests/README.md index 5e5e9214..de8a2e6e 100644 --- a/packages/e2e-tests/README.md +++ b/packages/e2e-tests/README.md @@ -1,7 +1,7 @@ # End-To-End Tests Each folder in the `scenarios` folder represents one testing scenario. -When `yarn test` is run, first `setup.ts` in all scenarios is executed, afterwards we run `jest`, which will pick up all `*.test.ts` files. +When `yarn test` is run, first `setup.ts` in all scenarios is executed, afterwards we run `vitest run`, which will pick up all `*.test.ts` files. Generally, the `*.test.ts` files can then use anything that is generated via `setup.ts`. ## Snapshot Test Structure @@ -15,6 +15,6 @@ For snapshot tests where files uploaded to Sentry are cpompared with local refer 2. Bundle files from `input` and upload them to Sentry 3. Download the files from Sentry with the for the given `release` property - `setup.ts` is the starting point to create bundles for all bundlers specified in `utils/bundlers.ts`. Specify the name of your entry point file(s) in this file. -- `*.test.ts` specifies all tests which are executed by Jest for this scenario. +- `*.test.ts` specifies all tests which are executed by Vitest for this scenario. Note that the final release name used per scenario is `[config.release]-[bundler]`. Each scenario will create separate releases for each bundler to distinguish the files generated by the bundlers. diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 00eee9c2..1e0399c4 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -26,7 +26,6 @@ "@sentry-internal/sentry-bundler-plugin-tsconfig": "4.9.1", "@types/axios": "^0.14.0", "@types/glob": "8.0.0", - "@types/webpack4": "npm:@types/webpack@^4", "esbuild": "0.14.49", "eslint": "^8.18.0", "glob": "8.0.3", @@ -35,8 +34,7 @@ "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack4": "npm:webpack@^4", - "webpack5": "npm:webpack@5.74.0" + "webpack": "5.74.0" }, "volta": { "extends": "../../package.json" diff --git a/packages/e2e-tests/tsconfig.json b/packages/e2e-tests/tsconfig.json index 79bc94be..b472a552 100644 --- a/packages/e2e-tests/tsconfig.json +++ b/packages/e2e-tests/tsconfig.json @@ -4,6 +4,6 @@ "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/e2e-tests/utils/bundlers.ts b/packages/e2e-tests/utils/bundlers.ts index 358ebbb1..32cea789 100644 --- a/packages/e2e-tests/utils/bundlers.ts +++ b/packages/e2e-tests/utils/bundlers.ts @@ -1 +1 @@ -export const BUNDLERS = ["rollup", "vite", "esbuild", "webpack4", "webpack5"]; +export const BUNDLERS = ["rollup", "vite", "esbuild", "webpack"]; diff --git a/packages/e2e-tests/utils/create-cjs-bundles.ts b/packages/e2e-tests/utils/create-cjs-bundles.ts index 727181f6..bc081596 100644 --- a/packages/e2e-tests/utils/create-cjs-bundles.ts +++ b/packages/e2e-tests/utils/create-cjs-bundles.ts @@ -1,8 +1,7 @@ import * as vite from "vite"; import * as path from "path"; import * as rollup from "rollup"; -import { default as webpack4 } from "webpack4"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import * as esbuild from "esbuild"; import type { Options } from "@sentry/bundler-plugin-core"; @@ -91,37 +90,7 @@ export function createCjsBundles( format: "cjs", }); - webpack4( - { - devtool: "source-map", - mode: "production", - entry: entrypoints, - cache: false, - output: { - path: path.join(outFolder, "webpack4"), - libraryTarget: "commonjs", - }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [ - sentryWebpackPlugin({ - ...sentryPluginOptions, - release: { - name: `${sentryPluginOptions.release.name!}-webpack4`, - uploadLegacySourcemaps: `${ - sentryPluginOptions.release.uploadLegacySourcemaps as string - }/webpack4`, - }, - }), - ], - }, - (err) => { - if (err) { - throw err; - } - } - ); - - webpack5( + webpack( { devtool: "source-map", cache: false, diff --git a/packages/esbuild-plugin/.eslintrc.js b/packages/esbuild-plugin/.eslintrc.js index bc838aa0..1efff870 100644 --- a/packages/esbuild-plugin/.eslintrc.js +++ b/packages/esbuild-plugin/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/eslint-configs/jest.js b/packages/eslint-configs/jest.js deleted file mode 100644 index 37b0cb5c..00000000 --- a/packages/eslint-configs/jest.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('eslint').ESLint.Options} */ -module.exports = { - overrides: [ - { - files: ["*.test.js", "*.test.ts", "**/__tests__/**/*.ts", "**/__tests__/**/*.js"], - plugins: ["jest"], - extends: ["plugin:jest/recommended", "plugin:jest/style"], - env: { - "jest/globals": true, - }, - }, - ], -}; diff --git a/packages/eslint-configs/package.json b/packages/eslint-configs/package.json index 71c499ff..af2e551d 100644 --- a/packages/eslint-configs/package.json +++ b/packages/eslint-configs/package.json @@ -10,7 +10,6 @@ "@typescript-eslint/eslint-plugin": "^5.13.0", "@typescript-eslint/parser": "^5.13.0", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-jest": "^25.3.0", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.4.0" }, diff --git a/packages/integration-tests/.eslintrc.js b/packages/integration-tests/.eslintrc.js index 9213808a..eca9a346 100644 --- a/packages/integration-tests/.eslintrc.js +++ b/packages/integration-tests/.eslintrc.js @@ -1,15 +1,8 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], - ignorePatterns: [ - ".eslintrc.js", - "fixtures/*/out", - "jest.config.js", - "fixtures/bundle-size-optimizations/*", - ], + extends: ["@sentry-internal/eslint-config/base"], + ignorePatterns: [".eslintrc.js", "fixtures/*/out", "fixtures/bundle-size-optimizations/*"], parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], @@ -17,11 +10,6 @@ module.exports = { env: { node: true, }, - settings: { - jest: { - version: jestPackageJson.version, - }, - }, rules: { "@typescript-eslint/explicit-function-return-type": "off", }, diff --git a/packages/integration-tests/README.md b/packages/integration-tests/README.md index aedffc3f..ced94ead 100644 --- a/packages/integration-tests/README.md +++ b/packages/integration-tests/README.md @@ -1,5 +1,5 @@ # Integration Tests Each folder in the `fixtures` folder represents one testing scenario. -When `yarn test` is run, first `setup.ts` in all fixtures is executed, afterwards we run `jest`, which will pick up all `*.test.ts` files. +When `yarn test` is run, first `setup.ts` in all fixtures is executed, afterwards we run `vitest run`, which will pick up all `*.test.ts` files. The `*.test.ts` files can then use anything that is generated via `setup.ts`. diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts b/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts index 0930d474..218ed700 100644 --- a/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts +++ b/packages/integration-tests/fixtures/after-upload-deletion-promise/after-upload-deletion.test.ts @@ -1,16 +1,10 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; describe("Deletes files with `filesToDeleteAfterUpload` set to a promise", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack4", "bundle.js.map"))).toBe(false); - }); - - test("webpack 5 bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack5", "bundle.js.map"))).toBe(false); + test("webpack bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "webpack", "bundle.js.map"))).toBe(false); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts index 140a11cb..ef723d4f 100644 --- a/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts +++ b/packages/integration-tests/fixtures/after-upload-deletion-promise/setup.ts @@ -3,7 +3,7 @@ import { createCjsBundles } from "../../utils/create-cjs-bundles"; const outputDir = path.resolve(__dirname, "out"); -["webpack4", "webpack5", "esbuild", "rollup", "vite"].forEach((bundler) => { +["webpack", "esbuild", "rollup", "vite"].forEach((bundler) => { const fileDeletionGlobPromise = new Promise((resolve) => { setTimeout(() => { resolve([path.join(__dirname, "out", bundler, "bundle.js.map")]); diff --git a/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts b/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts index cf095502..44eed1e2 100644 --- a/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts +++ b/packages/integration-tests/fixtures/after-upload-deletion/after-upload-deletion.test.ts @@ -1,16 +1,10 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; describe("Deletes with `filesToDeleteAfterUpload` even without uploading anything", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack4", "bundle.js.map"))).toBe(false); - }); - - test("webpack 5 bundle", () => { - expect(fs.existsSync(path.join(__dirname, "out", "webpack5", "bundle.js.map"))).toBe(false); + test("webpack bundle", () => { + expect(fs.existsSync(path.join(__dirname, "out", "webpack", "bundle.js.map"))).toBe(false); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/after-upload-deletion/setup.ts b/packages/integration-tests/fixtures/after-upload-deletion/setup.ts index e28f10b9..acb799e8 100644 --- a/packages/integration-tests/fixtures/after-upload-deletion/setup.ts +++ b/packages/integration-tests/fixtures/after-upload-deletion/setup.ts @@ -3,7 +3,7 @@ import { createCjsBundles } from "../../utils/create-cjs-bundles"; const outputDir = path.resolve(__dirname, "out"); -["webpack4", "webpack5", "esbuild", "rollup", "vite"].forEach((bundler) => { +["webpack", "esbuild", "rollup", "vite"].forEach((bundler) => { createCjsBundles( { bundle: path.resolve(__dirname, "input", "bundle.js"), diff --git a/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts b/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts index 85fc09de..eacbbb18 100644 --- a/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/application-key-injection/metadata-injection.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -16,12 +14,8 @@ function checkBundle(bundlePath: string): void { } describe("appKey injection", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack4", "bundle.js")); - }); - - test("webpack 5 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); + test("webpack bundle", () => { + checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/application-key-injection/setup.ts b/packages/integration-tests/fixtures/application-key-injection/setup.ts index a745efa2..72bf9bc2 100644 --- a/packages/integration-tests/fixtures/application-key-injection/setup.ts +++ b/packages/integration-tests/fixtures/application-key-injection/setup.ts @@ -11,5 +11,5 @@ createCjsBundles( { applicationKey: "my-app", }, - ["webpack4", "webpack5", "esbuild", "rollup", "vite"] + ["webpack", "esbuild", "rollup", "vite"] ); diff --git a/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts b/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts index 57eb798a..614d271c 100644 --- a/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts +++ b/packages/integration-tests/fixtures/application-key-with-debug-id/application-key-with-debug-id.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; interface BundleOutput { debugIds: Record | undefined; @@ -35,12 +33,8 @@ function checkBundle(bundlePath: string): void { } describe("applicationKey with debug ID injection", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack4", "bundle.js")); - }); - - test("webpack 5 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); + test("webpack bundle", () => { + checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts b/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts index 8b33efec..f648e4a9 100644 --- a/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts +++ b/packages/integration-tests/fixtures/application-key-with-debug-id/setup.ts @@ -14,5 +14,5 @@ createCjsBundles( telemetry: false, release: { name: "test-release", create: false }, }, - ["webpack4", "webpack5", "esbuild", "rollup", "vite"] + ["webpack", "esbuild", "rollup", "vite"] ); diff --git a/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts b/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts index db3bc356..c9bc1a4c 100644 --- a/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts +++ b/packages/integration-tests/fixtures/basic-release-injection/basic-release-injection.test.ts @@ -1,6 +1,6 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -28,12 +28,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "./out/vite/index.js")); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { +test("webpack bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack4/index.js")); -}); - -test("webpack 5 bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack5/index.js")); + checkBundle(path.join(__dirname, "./out/webpack/index.js")); }); diff --git a/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts index e2a07616..35d96f6b 100644 --- a/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts +++ b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts @@ -1,6 +1,6 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -15,14 +15,8 @@ function checkBundle(bundlePath: string): void { expect(JSON.parse(processOutput)).toEqual( expect.objectContaining({ - deps: expect.arrayContaining([ - "esbuild", - "rollup", - "vite", - "webpack4", - "webpack5", - ]) as string[], - depsVersions: { rollup: 3, vite: 3, react: 18 }, + deps: expect.arrayContaining(["esbuild", "rollup", "vite", "webpack"]) as string[], + depsVersions: { rollup: 3, vite: 3, react: 18, webpack: 5 }, // This will differ based on what env this is run on nodeVersion: expectedNodeVersion, }) @@ -44,12 +38,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack4", "index.js")); -}); - test("webpack 5 bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack5", "index.js")); + checkBundle(path.join(__dirname, "out", "webpack", "index.js")); }); diff --git a/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts b/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts index fb754943..162d0c97 100644 --- a/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts +++ b/packages/integration-tests/fixtures/bundle-size-optimizations/bundle-size-optimizations.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import fs from "fs"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; const expectedOutputs: Record> = { esbuild: { @@ -24,11 +22,7 @@ const expectedOutputs: Record> = { "bundle1.js": `console.log(1);`, "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, }, - webpack4: { - "bundle1.js": `console.log(1)`, - "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, - }, - webpack5: { + webpack: { "bundle1.js": `console.log(1)`, "bundle2.js": `console.log({debug:"b",trace:"b",replayCanvas:"a",replayIframe:"a",replayShadowDom:"a",replayWorker:"a"})`, }, @@ -59,12 +53,7 @@ test("vite bundle", () => { checkBundle("vite", "bundle2.js"); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle("webpack4", "bundle1.js"); - checkBundle("webpack4", "bundle2.js"); -}); - -test("webpack 5 bundle", () => { - checkBundle("webpack5", "bundle1.js"); - checkBundle("webpack5", "bundle2.js"); +test("webpack bundle", () => { + checkBundle("webpack", "bundle1.js"); + checkBundle("webpack", "bundle2.js"); }); diff --git a/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts b/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts index ac7a790e..1f42ed18 100644 --- a/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts +++ b/packages/integration-tests/fixtures/component-name-annotate-experimental/component-name-annotate-experimental.test.ts @@ -1,36 +1,33 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; -const SNAPSHOT = `"
Component A
"`; +const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; -function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { +function runBundle(bundlePath: string): string { const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput.trim()).toMatchInlineSnapshot(snapshot); + return processOutput.trim(); } test("esbuild bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/esbuild/index.js"), ESBUILD_SNAPSHOT); + expect(runBundle(path.join(__dirname, "./out/esbuild/index.js"))).toMatchInlineSnapshot( + ESBUILD_SNAPSHOT + ); }); test("rollup bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/rollup/index.js")); + expect(runBundle(path.join(__dirname, "./out/rollup/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); test("vite bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/vite/index.js")); + expect(runBundle(path.join(__dirname, "./out/vite/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle if node is < 18", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack4/index.js")); -}); - -test("webpack 5 bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack5/index.js")); +expect.assertions(1); +test("webpack bundle", () => { + expect(runBundle(path.join(__dirname, "./out/webpack/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); diff --git a/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts b/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts index 79417c63..0f8ac92c 100644 --- a/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts +++ b/packages/integration-tests/fixtures/component-name-annotate/component-name-annotate.test.ts @@ -1,36 +1,33 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; -const SNAPSHOT = `"
Component A
"`; +const SNAPSHOT = `"
Component A
"`; const ESBUILD_SNAPSHOT = `"
Component A
"`; -function checkBundle(bundlePath: string, snapshot = SNAPSHOT): void { +function runBundle(bundlePath: string): string { const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); - expect(processOutput.trim()).toMatchInlineSnapshot(snapshot); + return processOutput.trim(); } test("esbuild bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/esbuild/index.js"), ESBUILD_SNAPSHOT); + expect(runBundle(path.join(__dirname, "./out/esbuild/index.js"))).toMatchInlineSnapshot( + ESBUILD_SNAPSHOT + ); }); test("rollup bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/rollup/index.js")); + expect(runBundle(path.join(__dirname, "./out/rollup/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); test("vite bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "./out/vite/index.js")); + expect(runBundle(path.join(__dirname, "./out/vite/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle if node is < 18", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack4/index.js")); -}); - -test("webpack 5 bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "./out/webpack5/index.js")); +expect.assertions(1); +test("webpack bundle", () => { + expect(runBundle(path.join(__dirname, "./out/webpack/index.js"))).toMatchInlineSnapshot(SNAPSHOT); }); diff --git a/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts b/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts index c3605db7..ce6a6338 100644 --- a/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts +++ b/packages/integration-tests/fixtures/debug-id-injection/debug-id-injection.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; function checkBundle(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -51,16 +49,9 @@ test("vite bundle", () => { ); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { +test("webpack bundle", () => { checkBundle( - path.join(__dirname, "out", "webpack4", "bundle1.js"), - path.join(__dirname, "out", "webpack4", "bundle2.js") - ); -}); - -test("webpack 5 bundle", () => { - checkBundle( - path.join(__dirname, "out", "webpack5", "bundle1.js"), - path.join(__dirname, "out", "webpack5", "bundle2.js") + path.join(__dirname, "out", "webpack", "bundle1.js"), + path.join(__dirname, "out", "webpack", "bundle2.js") ); }); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts index c88b05be..7363c962 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts @@ -1,9 +1,8 @@ -/* eslint-disable jest/expect-expect */ import * as path from "path"; import * as fs from "fs"; import * as os from "os"; -import { describeNode18Plus } from "../../utils/testIf"; import { execSync } from "child_process"; +import { expect, describe, beforeEach, test, afterEach } from "vitest"; function createTempDir() { return fs.mkdtempSync(path.join(os.tmpdir(), "sentry-bundler-plugin-upload-")); @@ -43,7 +42,7 @@ function expected(tempDir: string) { expect(source).toContain(`="${debugId || "fail"}"`); } -describeNode18Plus("vite 6 bundle", () => { +describe("vite 6 bundle", () => { const viteRoot = path.join(__dirname, "input", "vite6"); const tempDir = createTempDir(); @@ -65,8 +64,8 @@ describeNode18Plus("vite 6 bundle", () => { }); }); -describeNode18Plus("webpack 5 bundle", () => { - const webpackRoot = path.join(__dirname, "input", "webpack5"); +describe("webpack bundle", () => { + const webpackRoot = path.join(__dirname, "input", "webpack"); const tempDir = createTempDir(); beforeEach(() => { @@ -78,7 +77,7 @@ describeNode18Plus("webpack 5 bundle", () => { }); }); - test("check webpack 5 bundle", () => { + test("check webpack bundle", () => { expected(tempDir); }); @@ -87,7 +86,7 @@ describeNode18Plus("webpack 5 bundle", () => { }); }); -describeNode18Plus("rollup bundle", () => { +describe("rollup bundle", () => { const rollupRoot = path.join(__dirname, "input", "rollup4"); const tempDir = createTempDir(); diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/package.json b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json similarity index 100% rename from packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/package.json rename to packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/package.json diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js similarity index 90% rename from packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js rename to packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js index ae1d0882..e4beac2f 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack5/webpack.config.js +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/input/webpack/webpack.config.js @@ -9,7 +9,7 @@ export default { cache: false, entry: { index: join(__dirname, "..", "bundle.js") }, output: { - path: join(__dirname, "..", "..", "out", "webpack5"), + path: join(__dirname, "..", "..", "out", "webpack"), library: { type: "commonjs", }, diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts similarity index 80% rename from packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts rename to packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts index 37bb553d..7914e4f4 100644 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack5.ts +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack.ts @@ -1,16 +1,16 @@ import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import * as path from "path"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import pluginOptions from "./plugin-options"; -webpack5( +webpack( { cache: false, entry: { index: path.join(__dirname, "input", "index.js"), }, output: { - path: path.join(__dirname, "out", "webpack5"), + path: path.join(__dirname, "out", "webpack"), library: { type: "commonjs", }, diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts deleted file mode 100644 index e6e60b5c..00000000 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/build-webpack4.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import * as path from "path"; -import { default as webpack4 } from "webpack4"; -import pluginOptions from "./plugin-options"; - -webpack4( - { - mode: "production", - entry: { - index: path.join(__dirname, "input", "index.js"), - }, - cache: false, - output: { - path: path.join(__dirname, "out", "webpack4"), - libraryTarget: "commonjs", - }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(pluginOptions)], - }, - (err) => { - if (err) { - throw err; - } - } -); diff --git a/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts b/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts index 9a557f40..7ad1bf41 100644 --- a/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts +++ b/packages/integration-tests/fixtures/deterministic-debug-ids/deterministic-debug-ids.test.ts @@ -1,11 +1,7 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; import fs from "fs/promises"; - -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -const nodejsMajorversion = process.version.split(".")[0]!.slice(1); +import { describe, test, expect, beforeEach, afterEach } from "vitest"; function executeAndGetDebugIds(bundlePath: string): string[] { const processOutput = childProcess.execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -25,11 +21,7 @@ afterEach(async () => { }); describe("Same debug IDs for multiple identical builds", () => { - const bundlers = ["rollup", "vite", "webpack5"]; - - if (parseInt(nodejsMajorversion) < 18) { - bundlers.push("webpack4"); - } + const bundlers = ["rollup", "vite", "webpack"]; test.each(bundlers)( "%s", @@ -51,11 +43,7 @@ describe("Same debug IDs for multiple identical builds", () => { }); describe("Different debug IDs for different builds", () => { - const bundlers = ["rollup", "vite", "webpack5"]; - - if (parseInt(nodejsMajorversion) < 18) { - bundlers.push("webpack4"); - } + const bundlers = ["rollup", "vite", "webpack"]; test.each(bundlers)( "%s", diff --git a/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts b/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts index 09c22d01..bcafe209 100644 --- a/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts +++ b/packages/integration-tests/fixtures/disabled-debug-id-injection/disabled-debug-id-injection.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath1: string, bundlePath2: string) { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -34,17 +32,10 @@ describe("should not inject debug IDs when `sourcemaps.disable` is `true`", () = ); }); - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + test("webpack bundle", () => { checkBundle( - path.join(__dirname, "out", "webpack4", "bundle1.js"), - path.join(__dirname, "out", "webpack4", "bundle2.js") - ); - }); - - test("webpack 5 bundle", () => { - checkBundle( - path.join(__dirname, "out", "webpack5", "bundle1.js"), - path.join(__dirname, "out", "webpack5", "bundle2.js") + path.join(__dirname, "out", "webpack", "bundle1.js"), + path.join(__dirname, "out", "webpack", "bundle2.js") ); }); }); diff --git a/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts b/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts index 9586dd20..c591dfbe 100644 --- a/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts +++ b/packages/integration-tests/fixtures/disabled-release-injection/disabled-release-injection.test.ts @@ -1,6 +1,6 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -28,12 +28,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { +test("webpack bundle", () => { expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack4", "index.js")); -}); - -test("webpack 5 bundle", () => { - expect.assertions(1); - checkBundle(path.join(__dirname, "out", "webpack5", "index.js")); + checkBundle(path.join(__dirname, "out", "webpack", "index.js")); }); diff --git a/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts b/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts index bf1c3b22..c610b864 100644 --- a/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts +++ b/packages/integration-tests/fixtures/dont-mess-up-user-code/dont-mess-up-user-code.test.ts @@ -1,6 +1,6 @@ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { test, expect } from "vitest"; /** * Runs a node file in a seprate process. @@ -29,12 +29,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { +test("webpack bundle", () => { expect.assertions(2); - checkBundle(path.join(__dirname, "out", "webpack4", "index.js")); -}); - -test("webpack 5 bundle", () => { - expect.assertions(2); - checkBundle(path.join(__dirname, "out", "webpack5", "index.js")); + checkBundle(path.join(__dirname, "out", "webpack", "index.js")); }); diff --git a/packages/integration-tests/fixtures/errorhandling/build-webpack5.ts b/packages/integration-tests/fixtures/errorhandling/build-webpack.ts similarity index 81% rename from packages/integration-tests/fixtures/errorhandling/build-webpack5.ts rename to packages/integration-tests/fixtures/errorhandling/build-webpack.ts index c2c31a70..ec0722d3 100644 --- a/packages/integration-tests/fixtures/errorhandling/build-webpack5.ts +++ b/packages/integration-tests/fixtures/errorhandling/build-webpack.ts @@ -1,9 +1,9 @@ import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import * as path from "path"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import pluginOptions from "./plugin-options"; -webpack5( +webpack( { devtool: "source-map", cache: false, @@ -11,7 +11,7 @@ webpack5( index: path.join(__dirname, "input", "bundle.js"), }, output: { - path: path.join(__dirname, "out", "webpack5"), + path: path.join(__dirname, "out", "webpack"), library: { type: "commonjs", }, diff --git a/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts b/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts deleted file mode 100644 index 46db8686..00000000 --- a/packages/integration-tests/fixtures/errorhandling/build-webpack4.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; -import * as path from "path"; -import { default as webpack4 } from "webpack4"; -import pluginOptions from "./plugin-options"; - -webpack4( - { - devtool: "source-map", - cache: false, - entry: { - index: path.join(__dirname, "input", "bundle.js"), - }, - output: { - path: path.join(__dirname, "out", "webpack4"), - libraryTarget: "commonjs", - }, - mode: "production", - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(pluginOptions)], - }, - (err) => { - if (err) { - process.exit(1); - } - } -); diff --git a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts index 7aaaa82b..ea203509 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -1,16 +1,13 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import { spawn } from "child_process"; +import { describe, test, expect, beforeAll, afterAll } from "vitest"; -jest.setTimeout(10_000); - -describe("Error throwing by default (no errorHandler)", () => { +describe("Error throwing by default (no errorHandler)", { timeout: 10_000 }, () => { const FAKE_SENTRY_PORT = "9876"; const sentryServer = spawn("node", [path.join(__dirname, "fakeSentry.js")], { cwd: __dirname, - stdio: "ignore", // <-- set to "inherit" to get server logs. Deactivated to avoid test logs. + stdio: "inherit", // <-- set to "inherit" to get server logs. Deactivated to avoid test logs. env: { ...process.env, FAKE_SENTRY_PORT }, shell: true, }); @@ -27,11 +24,7 @@ describe("Error throwing by default (no errorHandler)", () => { sentryServer.kill(); }); - const bundlersToTest = ["vite", "rollup", "webpack5", "esbuild"]; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - if (parseInt(process.version.split(".")[0]!.slice(1)) < 18) { - bundlersToTest.push("webpack4"); - } + const bundlersToTest = ["vite", "rollup", "webpack", "esbuild"]; test.each(bundlersToTest)( "doesn't throw when Sentry server responds with error code for %s", diff --git a/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts b/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts index 00daa642..099a1cc4 100644 --- a/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts +++ b/packages/integration-tests/fixtures/esbuild-inject-compat/esbuild-inject-compat.test.ts @@ -1,6 +1,7 @@ import childProcess from "child_process"; import path from "path"; import fs from "fs"; +import { test, expect } from "vitest"; const outputBundlePath = path.join(__dirname, "out", "index.js"); diff --git a/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts b/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts index 41d97bfe..3953d6e1 100644 --- a/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts +++ b/packages/integration-tests/fixtures/injection-with-query-param/injection-with-query-param.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import childProcess from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; function checkBundleForDebugIds(bundlePath1: string, bundlePath2: string): string[] { const process1Output = childProcess.execSync(`node ${bundlePath1}`, { encoding: "utf-8" }); @@ -56,19 +54,11 @@ function checkBundleForRelease(bundlePath: string): void { checkBundleForRelease(path.join(__dirname, "out", "rollup", "bundle1.js?foo=bar#baz")); }); - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { + test("webpack bundle", () => { checkBundleForDebugIds( - path.join(__dirname, "out", "webpack4", "bundle1.js"), - path.join(__dirname, "out", "webpack4", "bundle2.js") + path.join(__dirname, "out", "webpack", "bundle1.js"), + path.join(__dirname, "out", "webpack", "bundle2.js") ); - checkBundleForRelease(path.join(__dirname, "out", "webpack4", "bundle1.js")); - }); - - test("webpack 5 bundle", () => { - checkBundleForDebugIds( - path.join(__dirname, "out", "webpack5", "bundle1.js"), - path.join(__dirname, "out", "webpack5", "bundle2.js") - ); - checkBundleForRelease(path.join(__dirname, "out", "webpack5", "bundle1.js")); + checkBundleForRelease(path.join(__dirname, "out", "webpack", "bundle1.js")); }); }); diff --git a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts index 4b08baf1..60c097ec 100644 --- a/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts +++ b/packages/integration-tests/fixtures/metadata-injection/metadata-injection.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -20,12 +18,8 @@ function checkBundle(bundlePath: string): void { } describe("metadata injection", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack4", "bundle.js")); - }); - - test("webpack 5 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); + test("webpack bundle", () => { + checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/metadata-injection/setup.ts b/packages/integration-tests/fixtures/metadata-injection/setup.ts index 6f7c31d1..45a7dcb6 100644 --- a/packages/integration-tests/fixtures/metadata-injection/setup.ts +++ b/packages/integration-tests/fixtures/metadata-injection/setup.ts @@ -11,5 +11,5 @@ createCjsBundles( { moduleMetadata: { team: "frontend" }, }, - ["webpack4", "webpack5", "esbuild", "rollup", "vite"] + ["webpack", "esbuild", "rollup", "vite"] ); diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts b/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts index 534397a9..acd9ff5b 100644 --- a/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts +++ b/packages/integration-tests/fixtures/metadata-with-debug-id/metadata-with-debug-id.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; interface BundleOutput { debugIds: Record | undefined; @@ -34,12 +32,8 @@ function checkBundle(bundlePath: string): void { } describe("metadata with debug ID injection", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack4", "bundle.js")); - }); - - test("webpack 5 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); + test("webpack bundle", () => { + checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts b/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts index 75d1fc4b..fb65cab6 100644 --- a/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts +++ b/packages/integration-tests/fixtures/metadata-with-debug-id/setup.ts @@ -14,5 +14,5 @@ createCjsBundles( telemetry: false, release: { name: "test-release", create: false }, }, - ["webpack4", "webpack5", "esbuild", "rollup", "vite"] + ["webpack", "esbuild", "rollup", "vite"] ); diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts b/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts index 509db17c..344e279c 100644 --- a/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts +++ b/packages/integration-tests/fixtures/release-value-with-quotes/release-value-with-quotes.test.ts @@ -1,8 +1,6 @@ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import { execSync } from "child_process"; import path from "path"; -import { testIfNodeMajorVersionIsLessThan18 } from "../../utils/testIf"; +import { describe, test, expect } from "vitest"; function checkBundle(bundlePath: string): void { const output = execSync(`node ${bundlePath}`, { encoding: "utf-8" }); @@ -10,12 +8,8 @@ function checkBundle(bundlePath: string): void { } describe("Properly escapes release values before injecting", () => { - testIfNodeMajorVersionIsLessThan18("webpack 4 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack4", "bundle.js")); - }); - - test("webpack 5 bundle", () => { - checkBundle(path.join(__dirname, "out", "webpack5", "bundle.js")); + test("webpack bundle", () => { + checkBundle(path.join(__dirname, "out", "webpack", "bundle.js")); }); test("esbuild bundle", () => { diff --git a/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts b/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts index 4782d284..648e7bda 100644 --- a/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts +++ b/packages/integration-tests/fixtures/release-value-with-quotes/setup.ts @@ -11,5 +11,5 @@ createCjsBundles( { release: { name: 'i am a dangerous release value because I contain a "' }, }, - ["webpack4", "webpack5", "esbuild", "rollup", "vite"] + ["webpack", "esbuild", "rollup", "vite"] ); diff --git a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts index c3eb5588..68d5f0ce 100644 --- a/packages/integration-tests/fixtures/telemetry/telemetry.test.ts +++ b/packages/integration-tests/fixtures/telemetry/telemetry.test.ts @@ -1,9 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable jest/no-standalone-expect */ -/* eslint-disable jest/expect-expect */ import path from "path"; import * as rollup from "rollup"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; +import { test, expect } from "vitest"; function getGlobalWithInterceptor(): typeof global & { __SENTRY_INTERCEPT_TRANSPORT__?: unknown[]; diff --git a/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts b/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts index 6e6bbc56..069d66be 100644 --- a/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts +++ b/packages/integration-tests/fixtures/vite-mpa-extra-modules/vite-mpa-extra-modules.test.ts @@ -16,6 +16,7 @@ import childProcess from "child_process"; import fs from "fs"; import path from "path"; +import { describe, beforeAll, it, expect } from "vitest"; function getAssetFiles(outDir: string): string[] { const assetsDir = path.join(outDir, "assets"); diff --git a/packages/integration-tests/jest.config.js b/packages/integration-tests/jest.config.js deleted file mode 100644 index 73ed904f..00000000 --- a/packages/integration-tests/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.(t|j)sx?$": ["@swc/jest"], - }, - transformIgnorePatterns: ["!node_modules/"], -}; diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5641e6a4..3e300293 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -4,9 +4,9 @@ "license": "MIT", "private": true, "scripts": { - "test": "run-s test:setup test:jest", + "test": "run-s test:setup test:vitest", "test:setup": "ts-node scripts/run-fixture-setups.ts", - "test:jest": "jest", + "test:vitest": "vitest run -t \"Error throwing by default\"", "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", @@ -26,23 +26,19 @@ "@sentry/rollup-plugin": "4.9.1", "@sentry/vite-plugin": "4.9.1", "@sentry/webpack-plugin": "4.9.1", - "@swc/jest": "^0.2.21", - "@types/jest": "^28.1.3", "@types/react": "^18.2.0", - "@types/webpack4": "npm:@types/webpack@^4", "@vitejs/plugin-react": "^4.2.1", "babel-loader": "^8.0.0", "esbuild": "0.14.49", "esbuild019": "npm:esbuild@^0.19.4", "eslint": "^8.18.0", - "jest": "^28.1.3", + "vitest": "^4.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "3.2.0", "ts-node": "^10.9.1", "vite": "3.0.0", - "webpack4": "npm:webpack@^4", - "webpack5": "npm:webpack@5.74.0" + "webpack": "5.74.0" }, "devDependencies": { "premove": "^4.0.0" diff --git a/packages/integration-tests/tsconfig.json b/packages/integration-tests/tsconfig.json index 79bc94be..b472a552 100644 --- a/packages/integration-tests/tsconfig.json +++ b/packages/integration-tests/tsconfig.json @@ -4,6 +4,6 @@ "include": ["./**/*"], "compilerOptions": { "esModuleInterop": true, - "types": ["node", "jest"] + "types": ["node"] } } diff --git a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts index 21f116d5..dc18be8a 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-for-react.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-for-react.ts @@ -2,23 +2,18 @@ import * as vite from "vite"; import react from "@vitejs/plugin-react"; import * as path from "path"; import * as rollup from "rollup"; -import { default as webpack4 } from "webpack4"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import esbuild from "esbuild019"; import { babel as babelPlugin } from "@rollup/plugin-babel"; import resolve from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; -import type { Stats as Webpack5Stats } from "webpack5"; -import type { Stats as Webpack4Stats } from "webpack4"; +import type { Stats } from "webpack"; import { Options } from "@sentry/bundler-plugin-core"; import { sentryVitePlugin } from "@sentry/vite-plugin"; import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -const nodejsMajorversion = process.version.split(".")[0]!.slice(1); - export function createCjsBundles( entrypoints: { [name: string]: string }, outFolder: string, @@ -82,51 +77,13 @@ export function createCjsBundles( }); } - // Webpack 4 doesn't work on Node.js versions >= 18 - if (parseInt(nodejsMajorversion) < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { - webpack4( - { - mode: "production", - entry: entrypoints, - cache: false, - optimization: { - minimize: false, - }, - resolve: { - extensions: RESOLVABLE_EXTENSIONS, - }, - output: { - path: path.join(outFolder, "webpack4"), - libraryTarget: "commonjs", - }, - module: { - rules: [ - { - test: RESOLVABLE_JSX_EXTENSIONS_REGEX, - exclude: /node_modules/, - use: { - loader: "babel-loader", - options: { - presets: [["@babel/preset-react", { runtime: "automatic" }]], - }, - }, - }, - ], - }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - handleWebpack - ); - } - - if (plugins.length === 0 || plugins.includes("webpack5")) { - webpack5( + if (plugins.length === 0 || plugins.includes("webpack")) { + webpack( { cache: false, entry: entrypoints, output: { - path: path.join(outFolder, "webpack5"), + path: path.join(outFolder, "webpack"), library: { type: "commonjs", }, @@ -162,7 +119,7 @@ export function createCjsBundles( const RESOLVABLE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx"]; const RESOLVABLE_JSX_EXTENSIONS_REGEX = /\.?(j|t)sx$/; -function handleWebpack(err: Error | undefined, stats: Webpack4Stats | Webpack5Stats | undefined) { +function handleWebpack(err: Error | undefined, stats: Stats | undefined) { if (err) { throw err; } diff --git a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts index a16d2c21..bec26dc9 100644 --- a/packages/integration-tests/utils/create-cjs-bundles-with-query.ts +++ b/packages/integration-tests/utils/create-cjs-bundles-with-query.ts @@ -1,16 +1,12 @@ import * as vite from "vite"; import * as path from "path"; import * as rollup from "rollup"; -import { default as webpack4 } from "webpack4"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import { Options } from "@sentry/bundler-plugin-core"; import { sentryVitePlugin } from "@sentry/vite-plugin"; import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -const nodejsMajorVersion = process.version.split(".")[0]!.slice(1); - export function createCjsBundlesWithQueryParam( entrypoints: { [name: string]: string }, outFolder: string, @@ -55,38 +51,14 @@ export function createCjsBundlesWithQueryParam( // esbuild doesn't have an option to add a query param } - // Webpack 4 doesn't work on Node.js versions >= 18 - if (parseInt(nodejsMajorVersion) < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { - webpack4( - { - devtool: "source-map", - mode: "production", - entry: entrypoints, - cache: false, - output: { - path: path.join(outFolder, "webpack4"), - filename: "[name].js?foo=bar#baz", // For some weird reason, the query param is not actually put to disk but the "virtual" behaviour we want to test still applies - libraryTarget: "commonjs", - }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - (err) => { - if (err) { - throw err; - } - } - ); - } - - if (plugins.length === 0 || plugins.includes("webpack5")) { - webpack5( + if (plugins.length === 0 || plugins.includes("webpack")) { + webpack( { devtool: "source-map", cache: false, entry: entrypoints, output: { - path: path.join(outFolder, "webpack5"), + path: path.join(outFolder, "webpack"), filename: "[name].js?foo=bar#baz", // For some weird reason, the query param is not actually put to disk but the "virtual" behaviour we want to test still applies library: { type: "commonjs", diff --git a/packages/integration-tests/utils/create-cjs-bundles.ts b/packages/integration-tests/utils/create-cjs-bundles.ts index b763a634..648ec6be 100644 --- a/packages/integration-tests/utils/create-cjs-bundles.ts +++ b/packages/integration-tests/utils/create-cjs-bundles.ts @@ -1,8 +1,7 @@ import * as vite from "vite"; import * as path from "path"; import * as rollup from "rollup"; -import { default as webpack4 } from "webpack4"; -import { webpack as webpack5 } from "webpack5"; +import { webpack } from "webpack"; import * as esbuild from "esbuild"; import { Options } from "@sentry/bundler-plugin-core"; import { sentryVitePlugin } from "@sentry/vite-plugin"; @@ -10,9 +9,7 @@ import { sentryWebpackPlugin } from "@sentry/webpack-plugin"; import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; import { sentryRollupPlugin } from "@sentry/rollup-plugin"; -const [NODE_MAJOR_VERSION] = process.version.replace("v", "").split(".").map(Number) as [number]; - -type Bundlers = "webpack4" | "webpack5" | "esbuild" | "rollup" | "vite" | string; +type Bundlers = "webpack" | "esbuild" | "rollup" | "vite" | string; export function createCjsBundles( entrypoints: { [name: string]: string }, @@ -66,38 +63,14 @@ export function createCjsBundles( }); } - // Webpack 4 doesn't work on Node.js versions >= 18 - if (NODE_MAJOR_VERSION < 18 && (plugins.length === 0 || plugins.includes("webpack4"))) { - webpack4( - { - devtool: "source-map", - mode: "production", - entry: entrypoints, - cache: false, - output: { - path: path.join(outFolder, "webpack4"), - libraryTarget: "commonjs", - filename: "[name].js?[contenthash]", - }, - target: "node", // needed for webpack 4 so we can access node api - plugins: [sentryWebpackPlugin(sentryPluginOptions)], - }, - (err) => { - if (err) { - throw err; - } - } - ); - } - - if (plugins.length === 0 || plugins.includes("webpack5")) { - webpack5( + if (plugins.length === 0 || plugins.includes("webpack")) { + webpack( { devtool: "source-map", cache: false, entry: entrypoints, output: { - path: path.join(outFolder, "webpack5"), + path: path.join(outFolder, "webpack"), library: { type: "commonjs", }, diff --git a/packages/integration-tests/utils/testIf.ts b/packages/integration-tests/utils/testIf.ts deleted file mode 100644 index 8f47bc78..00000000 --- a/packages/integration-tests/utils/testIf.ts +++ /dev/null @@ -1,27 +0,0 @@ -const [NODE_MAJOR_VERSION] = process.version.replace("v", "").split(".").map(Number) as [number]; - -// eslint-disable-next-line no-undef -export function testIf(condition: boolean): jest.It { - if (condition) { - // eslint-disable-next-line no-undef - return test; - } else { - // eslint-disable-next-line no-undef - return test.skip; - } -} - -/** - * Webpack 4 doesn't work for Node.js versions >= 18. - * We can use this function to skip tests on Webpack 4. - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any, no-undef, @typescript-eslint/no-unsafe-assignment -export const testIfNodeMajorVersionIsLessThan18: jest.It = function () { - return testIf(NODE_MAJOR_VERSION < 18); - // eslint-disable-next-line @typescript-eslint/no-explicit-any -} as any; - -// eslint-disable-next-line no-undef -export const describeNode18Plus: jest.Describe = - // eslint-disable-next-line no-undef - NODE_MAJOR_VERSION >= 18 ? describe : describe.skip; diff --git a/packages/playground/build-webpack5.js b/packages/playground/build-webpack.js similarity index 82% rename from packages/playground/build-webpack5.js rename to packages/playground/build-webpack.js index 6f95647f..d201d959 100644 --- a/packages/playground/build-webpack5.js +++ b/packages/playground/build-webpack.js @@ -1,15 +1,15 @@ // @ts-check const path = require("path"); -const webpack5 = require("webpack5"); +const webpack = require("webpack"); const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); -webpack5( +webpack( { cache: false, entry: "./src/entrypoint1.js", output: { filename: "index.js", - path: path.resolve(__dirname, "out", "webpack5"), + path: path.resolve(__dirname, "out", "webpack"), library: { type: "commonjs", name: "ExampleBundle", diff --git a/packages/playground/build-webpack4.js b/packages/playground/build-webpack4.js deleted file mode 100644 index 089820be..00000000 --- a/packages/playground/build-webpack4.js +++ /dev/null @@ -1,29 +0,0 @@ -// @ts-check -const path = require("path"); -const webpack4 = require("webpack4"); -const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); - -webpack4( - { - mode: "production", - entry: "./src/entrypoint1.js", - cache: false, - output: { - path: path.resolve(__dirname, "out", "webpack4"), - filename: "index.js", - library: "ExampleBundle", - libraryTarget: "commonjs", - }, - plugins: [ - sentryWebpackPlugin({ - debug: true, - }), - ], - devtool: "source-map", - }, - (err) => { - if (err) { - throw err; - } - } -); diff --git a/packages/playground/package.json b/packages/playground/package.json index f0be5c56..1f4e7875 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -4,11 +4,10 @@ "license": "MIT", "private": true, "scripts": { - "build:playground": "run-p build:rollup build:vite build:webpack4 build:webpack5 build:esbuild", + "build:playground": "run-p build:rollup build:vite build:webpack build:esbuild", "build:rollup": "rollup --config rollup.config.mjs", "build:vite": "vite build --config vite.config.js", - "build:webpack4": "node build-webpack4.js", - "build:webpack5": "node build-webpack5.js", + "build:webpack": "node build-webpack.js", "build:esbuild": "node build-esbuild.js", "build:smallNodeApp": "vite build --config vite.config.smallNodeApp.js", "clean": "run-s clean:build", @@ -28,8 +27,7 @@ "http-proxy": "^1.18.1", "rollup": "3.2.0", "vite": "3.0.0", - "webpack4": "npm:webpack@4.46.0", - "webpack5": "npm:webpack@5" + "webpack": "5.0.0" }, "devDependencies": { "premove": "^4.0.0" diff --git a/packages/rollup-plugin/.eslintrc.js b/packages/rollup-plugin/.eslintrc.js index 65bef845..cfbd6575 100644 --- a/packages/rollup-plugin/.eslintrc.js +++ b/packages/rollup-plugin/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/vite-plugin/.eslintrc.js b/packages/vite-plugin/.eslintrc.js index 65bef845..cfbd6575 100644 --- a/packages/vite-plugin/.eslintrc.js +++ b/packages/vite-plugin/.eslintrc.js @@ -1,7 +1,7 @@ /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/webpack-plugin/.eslintrc.js b/packages/webpack-plugin/.eslintrc.js index 10789a5d..cfbd6575 100644 --- a/packages/webpack-plugin/.eslintrc.js +++ b/packages/webpack-plugin/.eslintrc.js @@ -1,9 +1,7 @@ -const jestPackageJson = require("jest/package.json"); - /** @type {import('eslint').ESLint.Options} */ module.exports = { root: true, - extends: ["@sentry-internal/eslint-config/jest", "@sentry-internal/eslint-config/base"], + extends: ["@sentry-internal/eslint-config/base"], ignorePatterns: [".eslintrc.js", "dist", "rollup.config.mjs"], parserOptions: { tsconfigRootDir: __dirname, diff --git a/packages/webpack-plugin/test/public-api.test.ts b/packages/webpack-plugin/test/public-api.test.ts index b03720e7..a54c63a6 100644 --- a/packages/webpack-plugin/test/public-api.test.ts +++ b/packages/webpack-plugin/test/public-api.test.ts @@ -1,4 +1,4 @@ -import { Plugin } from "webpack"; +import { WebpackPluginInstance } from "webpack"; import { sentryWebpackPlugin } from "../src"; import { describe, it, expect, test } from "vitest"; @@ -13,7 +13,7 @@ describe("sentryWebpackPlugin", () => { authToken: "test-token", org: "test-org", project: "test-project", - }) as Plugin; + }) as WebpackPluginInstance; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment expect(plugin).toEqual({ apply: expect.any(Function) }); diff --git a/packages/webpack-plugin/test/webpack5.test.ts b/packages/webpack-plugin/test/webpack5.test.ts index 34a242f6..179a9e26 100644 --- a/packages/webpack-plugin/test/webpack5.test.ts +++ b/packages/webpack-plugin/test/webpack5.test.ts @@ -1,10 +1,6 @@ -import { Plugin } from "webpack"; -import { sentryWebpackPlugin } from "../src/webpack5"; -import { describe, it, expect, test, vi } from "vitest"; - -vi.mock("webpack", () => { - throw new Error("Webpack 5 version of the plugin should use module from compiler."); -}); +import { WebpackPluginInstance } from "webpack"; +import { sentryWebpackPlugin } from "../src/index"; +import { describe, it, expect, test } from "vitest"; test("Webpack plugin should exist", () => { expect(sentryWebpackPlugin).toBeDefined(); @@ -17,7 +13,7 @@ describe("sentryWebpackPlugin", () => { authToken: "test-token", org: "test-org", project: "test-project", - }) as Plugin; + }) as WebpackPluginInstance; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment expect(plugin).toEqual({ apply: expect.any(Function) }); diff --git a/yarn.lock b/yarn.lock index 7280a576..421d6bff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,7 +44,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.23.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.23.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== @@ -800,7 +800,7 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== -"@gar/promisify@^1.1.3": +"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== @@ -874,60 +874,6 @@ jest-util "^27.5.1" slash "^3.0.0" -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - -"@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== - dependencies: - "@jest/console" "^28.1.3" - "@jest/reporters" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" - micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/create-cache-key-function@^27.4.2": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" - integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== - dependencies: - "@jest/types" "^27.5.1" - "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" @@ -938,31 +884,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== - dependencies: - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== - dependencies: - jest-get-type "^28.0.2" - -"@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== - dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" - "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -975,18 +896,6 @@ jest-mock "^27.5.1" jest-util "^27.5.1" -"@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== - dependencies: - "@jest/types" "^28.1.3" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" - "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" @@ -996,15 +905,6 @@ "@jest/types" "^27.5.1" expect "^27.5.1" -"@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/types" "^28.1.3" - "@jest/reporters@27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" @@ -1036,44 +936,6 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - terminal-link "^2.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - "@jest/schemas@^29.4.3": version "29.4.3" resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" @@ -1090,15 +952,6 @@ graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== - dependencies: - "@jridgewell/trace-mapping" "^0.3.13" - callsites "^3.0.0" - graceful-fs "^4.2.9" - "@jest/test-result@27.5.1", "@jest/test-result@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" @@ -1109,16 +962,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== - dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-sequencer@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" @@ -1129,16 +972,6 @@ jest-haste-map "^27.5.1" jest-runtime "^27.5.1" -"@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== - dependencies: - "@jest/test-result" "^28.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - slash "^3.0.0" - "@jest/transform@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" @@ -1160,27 +993,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" - "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" @@ -1192,18 +1004,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -1213,6 +1013,14 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" @@ -1223,6 +1031,11 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -1236,6 +1049,14 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -1246,7 +1067,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/sourcemap-codec@^1.5.5": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== @@ -1259,7 +1080,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== @@ -1267,6 +1088,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.31" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@lerna/child-process@6.6.2": version "6.6.2" resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz#5d803c8dee81a4e013dc428292e77b365cba876c" @@ -1432,6 +1261,14 @@ treeverse "^3.0.0" walk-up-path "^1.0.0" +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + "@npmcli/fs@^2.1.0": version "2.1.2" resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" @@ -1489,6 +1326,14 @@ pacote "^15.0.0" semver "^7.3.5" +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@npmcli/move-file@^2.0.0": version "2.0.1" resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" @@ -2351,11 +2196,6 @@ resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - "@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" @@ -2375,13 +2215,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@standard-schema/spec@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" @@ -2453,14 +2286,6 @@ "@swc/core-win32-ia32-msvc" "1.3.59" "@swc/core-win32-x64-msvc" "1.3.59" -"@swc/jest@^0.2.21": - version "0.2.26" - resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.26.tgz#6ef2d6d31869e3aaddc132603bc21f2e4c57cc5d" - integrity sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A== - dependencies: - "@jest/create-cache-key-function" "^27.4.2" - jsonc-parser "^3.2.0" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -2579,6 +2404,14 @@ resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== +"@types/eslint-scope@^3.7.0": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2605,6 +2438,11 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== +"@types/estree@^0.0.45": + version "0.0.45" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -2638,7 +2476,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": +"@types/graceful-fs@^4.1.2": version "4.1.6" resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== @@ -2671,14 +2509,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^28.1.3": - version "28.1.8" - resolved "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" - integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== - dependencies: - expect "^28.0.0" - pretty-format "^28.0.0" - "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -2834,18 +2664,6 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack4@npm:@types/webpack@^4": - version "4.41.33" - resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" - integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - "@types/webpack@npm:@types/webpack@^4": version "4.41.33" resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" @@ -2870,13 +2688,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== - dependencies: - "@types/yargs-parser" "*" - "@typescript-eslint/eslint-plugin@^5.13.0": version "5.59.7" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz#e470af414f05ecfdc05a23e9ce6ec8f91db56fe2" @@ -2893,13 +2704,6 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.59.7" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.7.tgz#77188db1240d173ed5b49ea51f3e90f188a54083" - integrity sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA== - dependencies: - "@typescript-eslint/utils" "5.59.7" - "@typescript-eslint/parser@^5.13.0": version "5.59.7" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" @@ -3045,14 +2849,6 @@ "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -3067,11 +2863,6 @@ resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" @@ -3082,11 +2873,6 @@ resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" @@ -3097,11 +2883,6 @@ resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" @@ -3135,25 +2916,11 @@ "@webassemblyjs/helper-api-error" "1.11.1" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" @@ -3169,16 +2936,6 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/wasm-gen" "1.11.1" -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -3196,13 +2953,6 @@ dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" @@ -3217,13 +2967,6 @@ dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" @@ -3236,11 +2979,6 @@ resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" @@ -3274,20 +3012,6 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" @@ -3299,17 +3023,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -3331,16 +3044,6 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -3363,18 +3066,6 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -3407,14 +3098,6 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -3530,6 +3213,11 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.3, acorn@^8.15.0: + version "8.16.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -3860,19 +3548,6 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== - dependencies: - "@jest/transform" "^28.1.3" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-loader@^8.0.0: version "8.3.0" resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" @@ -3904,16 +3579,6 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -3940,14 +3605,6 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== - dependencies: - babel-plugin-jest-hoist "^28.1.3" - babel-preset-current-node-syntax "^1.0.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -3971,6 +3628,11 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +baseline-browser-mapping@^2.9.0: + version "2.10.0" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9" + integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== + before-after-hook@^2.2.0: version "2.2.3" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" @@ -4159,6 +3821,17 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +browserslist@^4.14.3: + version "4.28.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + dependencies: + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" + browserslist@^4.14.5, browserslist@^4.22.2: version "4.22.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" @@ -4264,6 +3937,30 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cacache@^16.1.0: version "16.1.3" resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" @@ -4358,6 +4055,11 @@ caniuse-lite@^1.0.30001580: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== +caniuse-lite@^1.0.30001759: + version "1.0.30001770" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz#4dc47d3b263a50fbb243448034921e0a88591a84" + integrity sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw== + chai@^6.2.1: version "6.2.2" resolved "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz#ae41b52c9aca87734505362717f3255facda360e" @@ -5134,11 +4836,6 @@ diff-sequences@^27.5.1: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - diff@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -5247,6 +4944,11 @@ electron-to-chromium@^1.4.648: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz#832ab25e80ad698ac09c1ca547bd9ee6cce7df10" integrity sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA== +electron-to-chromium@^1.5.263: + version "1.5.302" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz#032a5802b31f7119269959c69fe2015d8dad5edb" + integrity sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -5260,11 +4962,6 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== - emittery@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -5313,7 +5010,7 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.10.0, enhanced-resolve@^5.14.0: +enhanced-resolve@^5.10.0: version "5.14.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" integrity sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw== @@ -5321,6 +5018,14 @@ enhanced-resolve@^5.10.0, enhanced-resolve@^5.14.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.2.0: + version "5.19.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c" + integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.3.0" + enquirer@~2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -5402,11 +5107,6 @@ es-module-lexer@^0.9.0: resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -es-module-lexer@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" - integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== - es-module-lexer@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" @@ -5783,6 +5483,11 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5820,13 +5525,6 @@ eslint-config-prettier@^8.3.0: resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== -eslint-plugin-jest@^25.3.0: - version "25.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - eslint-plugin-react-hooks@^4.4.0: version "4.6.0" resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" @@ -5853,7 +5551,7 @@ eslint-plugin-react@^7.29.4: semver "^6.3.0" string.prototype.matchall "^4.0.8" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -6088,17 +5786,6 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" -expect@^28.0.0, expect@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - express@^4.18.1: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" @@ -7711,14 +7398,6 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== - dependencies: - execa "^5.0.0" - p-limit "^3.1.0" - jest-circus@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" @@ -7744,49 +7423,6 @@ jest-circus@^27.5.1: stack-utils "^2.0.3" throat "^6.0.1" -jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - p-limit "^3.1.0" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== - dependencies: - "@jest/core" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - prompts "^2.0.1" - yargs "^17.3.1" - jest-config@27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" @@ -7817,34 +7453,6 @@ jest-config@27.5.1: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.3" - "@jest/types" "^28.1.3" - babel-jest "^28.1.3" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^28.1.3" - slash "^3.0.0" - strip-json-comments "^3.1.1" - jest-diff@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" @@ -7855,16 +7463,6 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-docblock@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" @@ -7872,13 +7470,6 @@ jest-docblock@^27.5.1: dependencies: detect-newline "^3.0.0" -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== - dependencies: - detect-newline "^3.0.0" - jest-each@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" @@ -7890,17 +7481,6 @@ jest-each@^27.5.1: jest-util "^27.5.1" pretty-format "^27.5.1" -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== - dependencies: - "@jest/types" "^28.1.3" - chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" - jest-environment-jsdom@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" @@ -7926,28 +7506,11 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" -jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - jest-haste-map@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" @@ -7968,25 +7531,6 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== - dependencies: - "@jest/types" "^28.1.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-jasmine2@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" @@ -8018,14 +7562,6 @@ jest-leak-detector@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== - dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-matcher-utils@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" @@ -8036,16 +7572,6 @@ jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== - dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-message-util@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" @@ -8061,21 +7587,6 @@ jest-message-util@^27.5.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-mock@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" @@ -8084,14 +7595,6 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" @@ -8102,19 +7605,6 @@ jest-regex-util@^27.5.1: resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== - dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" - jest-resolve@27.5.1, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" @@ -8131,21 +7621,6 @@ jest-resolve@27.5.1, jest-resolve@^27.5.1: resolve.exports "^1.1.0" slash "^3.0.0" -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - jest-runner@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" @@ -8173,33 +7648,6 @@ jest-runner@^27.5.1: source-map-support "^0.5.6" throat "^6.0.1" -jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== - dependencies: - "@jest/console" "^28.1.3" - "@jest/environment" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.10.2" - graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" - p-limit "^3.1.0" - source-map-support "0.5.13" - jest-runtime@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" @@ -8228,34 +7676,6 @@ jest-runtime@^27.5.1: slash "^3.0.0" strip-bom "^4.0.0" -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/globals" "^28.1.3" - "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - strip-bom "^4.0.0" - jest-serializer@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" @@ -8292,35 +7712,6 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^28.1.3" - graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - natural-compare "^1.4.0" - pretty-format "^28.1.3" - semver "^7.3.5" - jest-util@27.5.1, jest-util@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" @@ -8333,18 +7724,6 @@ jest-util@27.5.1, jest-util@^27.5.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-validate@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" @@ -8357,31 +7736,14 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== +jest-worker@^26.5.0: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: - "@jest/types" "^28.1.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^28.0.2" - leven "^3.1.0" - pretty-format "^28.1.3" - -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" + merge-stream "^2.0.0" + supports-color "^7.0.0" jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" @@ -8392,25 +7754,6 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" - integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== - dependencies: - "@jest/core" "^28.1.3" - "@jest/types" "^28.1.3" - import-local "^3.0.2" - jest-cli "^28.1.3" - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8521,7 +7864,7 @@ jsonc-parser@3.0.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== -jsonc-parser@3.2.0, jsonc-parser@^3.2.0: +jsonc-parser@3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== @@ -8582,11 +7925,6 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - lerna@^6.6.2: version "6.6.2" resolved "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" @@ -8756,6 +8094,11 @@ loader-runner@^2.4.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.1.0: + version "4.3.1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== + loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" @@ -9225,7 +8568,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -9514,6 +8857,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.27: + version "2.0.27" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + nopt@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" @@ -10058,7 +9406,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -10497,16 +9845,6 @@ pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.0.0, pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-quick@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" @@ -10567,14 +9905,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -11243,7 +10573,16 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.1.2: +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== @@ -11309,6 +10648,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" @@ -11428,11 +10774,6 @@ sigstore@^1.0.0, sigstore@^1.3.0, sigstore@^1.4.0: make-fetch-happen "^11.0.1" tuf-js "^1.1.3" -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -11497,7 +10838,7 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -11523,14 +10864,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -11632,6 +10965,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -11894,6 +11234,11 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0, tapable@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -11922,6 +11267,18 @@ tar@6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^6.0.2: + version "6.2.1" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tar@^6.1.11, tar@^6.1.2: version "6.1.15" resolved "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" @@ -11978,7 +11335,22 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^4.1.0: + version "4.2.3" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^5.1.3: version "5.3.9" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== @@ -12008,6 +11380,16 @@ terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.3.4: + version "5.46.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz#1b81e560d584bbdd74a8ede87b4d9477b0ff9695" + integrity sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -12472,6 +11854,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -12558,15 +11948,6 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" -v8-to-istanbul@^9.0.1: - version "9.1.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -12677,7 +12058,7 @@ walk-up-path@^1.0.0: resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== -walker@^1.0.7, walker@^1.0.8: +walker@^1.0.7: version "1.0.8" resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -12702,6 +12083,14 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" +watchpack@^2.0.0: + version "2.5.1" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" + integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -12732,7 +12121,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12740,71 +12129,50 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^2.0.1: + version "2.3.1" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack4@npm:webpack@4.46.0", "webpack4@npm:webpack@^4": - version "4.46.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== +webpack@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.0.0.tgz#c028b2f0c1db2322de1f4a30cc36f6e373d5a26a" + integrity sha512-OK+Q9xGgda3idw/DgCf75XsVFxRLPu48qPwygqI3W9ls5sDdKif5Ay4SM/1UVob0w4juJy14Zv9nNv0WeyV0aA== dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.45" "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + acorn "^8.0.3" + browserslist "^4.14.3" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -"webpack5@npm:webpack@5": - version "5.83.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.83.1.tgz#fcb69864a0669ac3539a471081952c45b15d1c40" - integrity sha512-TNsG9jDScbNuB+Lb/3+vYolPplCS3bbEaJf+Bj0Gw4DhP3ioAflBb1flcRt9zsWITyvOhM96wMQNRWlSX52DgA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.14.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" + enhanced-resolve "^5.2.0" + eslint-scope "^5.1.0" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" + pkg-dir "^4.2.0" + schema-utils "^3.0.0" + tapable "^2.0.0" + terser-webpack-plugin "^4.1.0" + watchpack "^2.0.0" + webpack-sources "^2.0.1" -"webpack5@npm:webpack@5.74.0": +webpack@5.74.0: version "5.74.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== @@ -13027,14 +12395,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - write-file-atomic@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" @@ -13142,7 +12502,7 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.4.0, yargs@^17.6.2: +yargs@^17.4.0, yargs@^17.6.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== From 644e5e2245a3c92f389dff5cdb2d66ce6f2bf09d Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 02:03:28 +0000 Subject: [PATCH 05/11] Fix a couple of merge issues --- .github/workflows/checks.yml | 2 +- .../bundler-plugin-core/test/build-plugin-manager.test.ts | 4 ++-- .../build-information-injection.test.ts | 2 +- .../fixtures/errorhandling/error-no-handler.test.ts | 2 +- packages/integration-tests/package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index a1d1fabc..5d734ca4 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -131,7 +131,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: ["18", "20", "22"] + node-version: [18, 20, 22, 24] os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: diff --git a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts index 80e80ccb..f5b7b476 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -39,13 +39,13 @@ vi.mock("@sentry/core", async () => ({ vi.mock("../src/glob"); vi.mock("../src/debug-id-upload"); -const mockGlobFiles = globFiles as jest.MockedFunction; +const mockGlobFiles = globFiles as MockedFunction; const mockPrepareBundleForDebugIdUpload = prepareBundleForDebugIdUpload as unknown as MockedFunction; describe("createSentryBuildPluginManager", () => { beforeEach(() => { - vi.resetAllMocks(); + vi.clearAllMocks(); // Clean up environment variables delete process.env["SENTRY_LOG_LEVEL"]; }); diff --git a/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts index 35d96f6b..000185cc 100644 --- a/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts +++ b/packages/integration-tests/fixtures/build-information-injection/build-information-injection.test.ts @@ -38,7 +38,7 @@ test("vite bundle", () => { checkBundle(path.join(__dirname, "out", "vite", "index.js")); }); -test("webpack 5 bundle", () => { +test("webpack bundle", () => { expect.assertions(1); checkBundle(path.join(__dirname, "out", "webpack", "index.js")); }); diff --git a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts index ea203509..ba74fa1f 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -7,7 +7,7 @@ describe("Error throwing by default (no errorHandler)", { timeout: 10_000 }, () const sentryServer = spawn("node", [path.join(__dirname, "fakeSentry.js")], { cwd: __dirname, - stdio: "inherit", // <-- set to "inherit" to get server logs. Deactivated to avoid test logs. + stdio: "ignore", // <-- set to "inherit" to get server logs. Deactivated to avoid test logs. env: { ...process.env, FAKE_SENTRY_PORT }, shell: true, }); diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 5279b4d9..68ce4a66 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -6,7 +6,7 @@ "scripts": { "test": "run-s test:setup test:vitest", "test:setup": "ts-node scripts/run-fixture-setups.ts", - "test:vitest": "vitest run -t \"Error throwing by default\"", + "test:vitest": "vitest run", "lint": "eslint .", "check:types": "tsc --project ./tsconfig.json --noEmit", "clean": "run-s clean:build", From a33e6effb498698631ffe98cb20a85a72e2e2951 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 10:17:33 +0000 Subject: [PATCH 06/11] Fix snapshots --- .../test/__snapshots__/public-api.test.ts.snap | 10 +++++----- packages/rollup-plugin/test/public-api.test.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap b/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap index 88fcdc57..cd0ad570 100644 --- a/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap +++ b/packages/rollup-plugin/test/__snapshots__/public-api.test.ts.snap @@ -1,11 +1,11 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Hooks > renderChunk > should process file 'bundle.cjs': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; +exports[`Hooks > renderChunk > should process file 'bundle.cjs' 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; -exports[`Hooks > renderChunk > should process file 'bundle.js#hash': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; +exports[`Hooks > renderChunk > should process file 'bundle.js#hash' 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; -exports[`Hooks > renderChunk > should process file 'bundle.js': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; +exports[`Hooks > renderChunk > should process file 'bundle.js' 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; -exports[`Hooks > renderChunk > should process file 'bundle.js?foo=bar': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; +exports[`Hooks > renderChunk > should process file 'bundle.js?foo=bar' 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; -exports[`Hooks > renderChunk > should process file 'bundle.mjs': undefined 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; +exports[`Hooks > renderChunk > should process file 'bundle.mjs' 1`] = `"!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b80112c0-6818-486d-96f0-185c023439b4",e._sentryDebugIdIdentifier="sentry-dbid-b80112c0-6818-486d-96f0-185c023439b4");}catch(e){}}();console.log("test");"`; diff --git a/packages/rollup-plugin/test/public-api.test.ts b/packages/rollup-plugin/test/public-api.test.ts index ad1fd004..812b82e1 100644 --- a/packages/rollup-plugin/test/public-api.test.ts +++ b/packages/rollup-plugin/test/public-api.test.ts @@ -65,7 +65,7 @@ describe("Hooks", () => { ["bundle.cjs"], ["bundle.js?foo=bar"], ["bundle.js#hash"], - ])("should process file '%s': %s", (fileName) => { + ])("should process file '%s'", (fileName) => { const code = 'console.log("test");'; const result = renderChunk(code, { fileName }); From c8b43faa76c047b9a11f028eceb10844dd62e0ff Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 10:50:30 +0000 Subject: [PATCH 07/11] Fix test --- .../fixtures/errorhandling/error-no-handler.test.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts index ba74fa1f..03a0f61d 100644 --- a/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts +++ b/packages/integration-tests/fixtures/errorhandling/error-no-handler.test.ts @@ -12,12 +12,14 @@ describe("Error throwing by default (no errorHandler)", { timeout: 10_000 }, () shell: true, }); + const serverStarted = new Promise((resolve) => + sentryServer.on("spawn", () => { + resolve(); + }) + ); + beforeAll(async () => { - await new Promise((resolve) => - sentryServer.on("spawn", () => { - resolve(); - }) - ); + await serverStarted; }); afterAll(() => { From 937fe36cbd4ee24eaa1ccf40fd49659edaf504d7 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 11:48:49 +0000 Subject: [PATCH 08/11] increase timeout for Windows --- .../debug-ids-already-injected.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts index 7363c962..c4ddee13 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts @@ -42,7 +42,7 @@ function expected(tempDir: string) { expect(source).toContain(`="${debugId || "fail"}"`); } -describe("vite 6 bundle", () => { +describe("vite 6 bundle", { timeout: 30_000 }, () => { const viteRoot = path.join(__dirname, "input", "vite6"); const tempDir = createTempDir(); @@ -64,7 +64,7 @@ describe("vite 6 bundle", () => { }); }); -describe("webpack bundle", () => { +describe("webpack bundle", { timeout: 30_000 }, () => { const webpackRoot = path.join(__dirname, "input", "webpack"); const tempDir = createTempDir(); @@ -86,7 +86,7 @@ describe("webpack bundle", () => { }); }); -describe("rollup bundle", () => { +describe("rollup bundle", { timeout: 30_000 }, () => { const rollupRoot = path.join(__dirname, "input", "rollup4"); const tempDir = createTempDir(); From 57ec68a790984c70a58ac098d070b7ba3d280372 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 12:11:53 +0000 Subject: [PATCH 09/11] Windows timeout --- .../debug-ids-already-injected.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts index c4ddee13..20c51c2f 100644 --- a/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts +++ b/packages/integration-tests/fixtures/debug-ids-already-injected/debug-ids-already-injected.test.ts @@ -53,7 +53,7 @@ describe("vite 6 bundle", { timeout: 30_000 }, () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); test("check vite 6 bundle", () => { expected(tempDir); @@ -75,7 +75,7 @@ describe("webpack bundle", { timeout: 30_000 }, () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); test("check webpack bundle", () => { expected(tempDir); @@ -97,7 +97,7 @@ describe("rollup bundle", { timeout: 30_000 }, () => { stdio: "inherit", env: { ...process.env, SENTRY_TEST_OVERRIDE_TEMP_DIR: tempDir }, }); - }); + }, 30_000); test("check rollup bundle", () => { expected(tempDir); From 748c1c256cf903ecaf1834714e0d2dfb025f9f28 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 24 Feb 2026 14:23:09 +0000 Subject: [PATCH 10/11] Remove `@swc/core` dep --- .../package.json | 1 - packages/bundler-plugin-core/package.json | 1 - packages/esbuild-plugin/package.json | 1 - packages/rollup-plugin/package.json | 1 - packages/vite-plugin/package.json | 1 - packages/webpack-plugin/package.json | 1 - yarn.lock | 66 ------------------- 7 files changed, 72 deletions(-) diff --git a/packages/babel-plugin-component-annotate/package.json b/packages/babel-plugin-component-annotate/package.json index a9a296d5..ad7730b1 100644 --- a/packages/babel-plugin-component-annotate/package.json +++ b/packages/babel-plugin-component-annotate/package.json @@ -54,7 +54,6 @@ "@babel/preset-react": "^7.23.3", "@sentry-internal/eslint-config": "5.1.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "eslint": "^8.18.0", diff --git a/packages/bundler-plugin-core/package.json b/packages/bundler-plugin-core/package.json index 3f72b30b..8618d4eb 100644 --- a/packages/bundler-plugin-core/package.json +++ b/packages/bundler-plugin-core/package.json @@ -68,7 +68,6 @@ "@sentry/core": "8.30.0", "@sentry/types": "8.30.0", "@sentry/utils": "8.30.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/esbuild-plugin/package.json b/packages/esbuild-plugin/package.json index 2899409c..e1584f8a 100644 --- a/packages/esbuild-plugin/package.json +++ b/packages/esbuild-plugin/package.json @@ -54,7 +54,6 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "eslint": "^8.18.0", diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index 02a32d65..63af51f3 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -58,7 +58,6 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index f13c6ea1..24798f8d 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -54,7 +54,6 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "eslint": "^8.18.0", "vitest": "^4.0.0", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 8de87f5c..9bc025a0 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -59,7 +59,6 @@ "devDependencies": { "@sentry-internal/eslint-config": "5.1.0", "@sentry-internal/sentry-bundler-plugin-tsconfig": "5.1.0", - "@swc/core": "^1.2.205", "@types/node": "^18.6.3", "@types/uuid": "^9.0.1", "@types/webpack": "npm:@types/webpack@^4", diff --git a/yarn.lock b/yarn.lock index d3be085a..72b84a5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2220,72 +2220,6 @@ resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== -"@swc/core-darwin-arm64@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.59.tgz#04137eaf3549a2c195a4eeff409687379d927809" - integrity sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ== - -"@swc/core-darwin-x64@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.59.tgz#edd5b4e33f7caa2b67a4989934fe7bc8e24d79dd" - integrity sha512-iqDs+yii9mOsmpJez82SEi4d4prWDRlapHxKnDVJ0x1AqRo41vIq8t3fujrvCHYU5VQgOYGh4ooXQpaP2H3B2A== - -"@swc/core-linux-arm-gnueabihf@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.59.tgz#448c1c09f9d25e416e431fe1a627c2fc1abd1251" - integrity sha512-PB0PP+SgkCSd/kYmltnPiGv42cOSaih1OjXCEjxvNwUFEmWqluW6uGdWaNiR1LoYMxhcHZTc336jL2+O3l6p0Q== - -"@swc/core-linux-arm64-gnu@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.59.tgz#78061652c93f64cf7d6488a18caaffb98e94d8e1" - integrity sha512-Ol/JPszWZ+OZ44FOdJe35TfJ1ckG4pYaisZJ4E7PzfwfVe2ygX85C5WWR4e5L0Y1zFvzpcI7gdyC2wzcXk4Cig== - -"@swc/core-linux-arm64-musl@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.59.tgz#496a939129243b51e1e1ff90cdcc1c1437e71d6f" - integrity sha512-PtTTtGbj9GiY5gJdoSFL2A0vL6BRaS1haAhp6g3hZvLDkTTg+rJURmzwBMMjaQlnGC62x/lLf6MoszHG/05//Q== - -"@swc/core-linux-x64-gnu@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.59.tgz#4e12cab7e6a49d52321eac9d10787cdb8cadce0f" - integrity sha512-XBW9AGi0YsIN76IfesnDSBn/5sjR69J75KUNte8sH6seYlHJ0/kblqUMbUcfr0CiGoJadbzAZeKZZmfN7EsHpg== - -"@swc/core-linux-x64-musl@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.59.tgz#8e29ade3599c5215d1c04507e59761aa5c95a9eb" - integrity sha512-Cy5E939SdWPQ34cg6UABNO0RyEe0FuWqzZ/GLKtK11Ir4fjttVlucZiY59uQNyUVUc8T2qE0VBFCyD/zYGuHtg== - -"@swc/core-win32-arm64-msvc@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.59.tgz#c0b94236288e8e596628b821194ee80372cf0fdb" - integrity sha512-z5ZJxizRvRoSAaevRIi3YjQh74OFWEIhonSDWNdqDL7RbjEivcatYcG7OikH6s+rtPhOcwNm3PbGV2Prcgh/gg== - -"@swc/core-win32-ia32-msvc@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.59.tgz#f806824d840c2029354fd662b0f4eeb51836a9ef" - integrity sha512-vxpsn+hrKAhi5YusQfB/JXUJJVX40rIRE/L49ilBEqdbH8Khkoego6AD+2vWqTdJcUHo1WiAIAEZ0rTsjyorLQ== - -"@swc/core-win32-x64-msvc@1.3.59": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.59.tgz#f8a21d9048a3652c058880649e174c7a5589fae6" - integrity sha512-Ris/cJbURylcLwqz4RZUUBCEGsuaIHOJsvf69W5pGKHKBryVoOTNhBKpo3Km2hoAi5qFQ/ou0trAT4hBsVPZvQ== - -"@swc/core@^1.2.205": - version "1.3.59" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.59.tgz#0e73e320faf4ca881f51c1820e34e0998b720efc" - integrity sha512-ZBw31zd2E5SXiodwGvjQdx5ZC90b2uyX/i2LeMMs8LKfXD86pfOfQac+JVrnyEKDhASXj9icgsF9NXBhaMr3Kw== - optionalDependencies: - "@swc/core-darwin-arm64" "1.3.59" - "@swc/core-darwin-x64" "1.3.59" - "@swc/core-linux-arm-gnueabihf" "1.3.59" - "@swc/core-linux-arm64-gnu" "1.3.59" - "@swc/core-linux-arm64-musl" "1.3.59" - "@swc/core-linux-x64-gnu" "1.3.59" - "@swc/core-linux-x64-musl" "1.3.59" - "@swc/core-win32-arm64-msvc" "1.3.59" - "@swc/core-win32-ia32-msvc" "1.3.59" - "@swc/core-win32-x64-msvc" "1.3.59" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" From a9fd966e7a6ff325ed3f94d8b214282d295f6e38 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 26 Feb 2026 02:15:32 +0000 Subject: [PATCH 11/11] fix snapshots --- .../__snapshots__/basic-upload.test.ts.snap | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap b/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap index e7c77612..fb01a00b 100644 --- a/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap +++ b/packages/e2e-tests/scenarios/basic-upload/__snapshots__/basic-upload.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using esbuild 1`] = ` +exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using esbuild 1`] = ` Array [ Object { "content": "\\"use strict\\";var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-esbuild\\"};var e=o=>{if(o===3)throw new Error(\\"I'm an uncaught error\\");return o<=1?o:e(o-1)+e(o-2)};console.log(\\"Hi, I'm a very simple app\\");e(10);console.log(\\"I'm done\\"); @@ -15,7 +15,7 @@ Array [ ] `; -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using rollup 1`] = ` +exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using rollup 1`] = ` Array [ Object { "content": "'use strict'; @@ -62,7 +62,7 @@ console.log(\\"I'm done\\"); ] `; -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using vite 1`] = ` +exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using vite 1`] = ` Array [ Object { "content": "\\"use strict\\";var i=typeof window<\\"u\\"?window:typeof global<\\"u\\"?global:typeof self<\\"u\\"?self:{};i.SENTRY_RELEASE={id:\\"basic-upload-vite\\"};const o=e=>{if(e===3)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:o(e-1)+o(e-2)};console.log(\\"Hi, I'm a very simple app\\");o(10);console.log(\\"I'm done\\"); @@ -77,21 +77,7 @@ Array [ ] `; -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack4 1`] = ` -Array [ - Object { - "content": "!function(e,n){for(var r in n)e[r]=n[r]}(exports,function(e){var n={};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},r.r=function(e){\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},r.t=function(e,n){if(1&n&&(e=r(e)),8&n)return e;if(4&n&&\\"object\\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,\\"default\\",{enumerable:!0,value:e}),2&n&&\\"string\\"!=typeof e)for(var o in e)r.d(t,o,function(n){return e[n]}.bind(null,o));return t},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\\"a\\",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p=\\"\\",r(r.s=1)}([function(e,n){(\\"undefined\\"!=typeof window?window:\\"undefined\\"!=typeof global?global:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack4\\"}},function(e,n,r){\\"use strict\\";r.r(n);r(0);const t=e=>{if(3===e)throw new Error(\\"I'm an uncaught error\\");return e<=1?e:t(e-1)+t(e-2)};console.log(\\"Hi, I'm a very simple app\\"),t(10),console.log(\\"I'm done\\")}])); -//# sourceMappingURL=index.js.map", - "name": "~/index.js", - }, - Object { - "content": "{\\"version\\":3,\\"file\\":\\"index.js\\",\\"sources\\":[\\"webpack:///webpack/bootstrap\\",\\"webpack:///../bundler-plugin-core/sentry-release-injection-file.js\\",\\"webpack:///./scenarios/basic-upload/input/fib.js\\",\\"webpack:///./scenarios/basic-upload/input/index.js\\"],\\"sourcesContent\\":[\\" \\\\t// The module cache\\\\n \\\\tvar installedModules = {};\\\\n\\\\n \\\\t// The require function\\\\n \\\\tfunction __webpack_require__(moduleId) {\\\\n\\\\n \\\\t\\\\t// Check if module is in cache\\\\n \\\\t\\\\tif(installedModules[moduleId]) {\\\\n \\\\t\\\\t\\\\treturn installedModules[moduleId].exports;\\\\n \\\\t\\\\t}\\\\n \\\\t\\\\t// Create a new module (and put it into the cache)\\\\n \\\\t\\\\tvar module = installedModules[moduleId] = {\\\\n \\\\t\\\\t\\\\ti: moduleId,\\\\n \\\\t\\\\t\\\\tl: false,\\\\n \\\\t\\\\t\\\\texports: {}\\\\n \\\\t\\\\t};\\\\n\\\\n \\\\t\\\\t// Execute the module function\\\\n \\\\t\\\\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\\\n\\\\n \\\\t\\\\t// Flag the module as loaded\\\\n \\\\t\\\\tmodule.l = true;\\\\n\\\\n \\\\t\\\\t// Return the exports of the module\\\\n \\\\t\\\\treturn module.exports;\\\\n \\\\t}\\\\n\\\\n\\\\n \\\\t// expose the modules object (__webpack_modules__)\\\\n \\\\t__webpack_require__.m = modules;\\\\n\\\\n \\\\t// expose the module cache\\\\n \\\\t__webpack_require__.c = installedModules;\\\\n\\\\n \\\\t// define getter function for harmony exports\\\\n \\\\t__webpack_require__.d = function(exports, name, getter) {\\\\n \\\\t\\\\tif(!__webpack_require__.o(exports, name)) {\\\\n \\\\t\\\\t\\\\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\\\\n \\\\t\\\\t}\\\\n \\\\t};\\\\n\\\\n \\\\t// define __esModule on exports\\\\n \\\\t__webpack_require__.r = function(exports) {\\\\n \\\\t\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n \\\\t\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n \\\\t\\\\t}\\\\n \\\\t\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n \\\\t};\\\\n\\\\n \\\\t// create a fake namespace object\\\\n \\\\t// mode & 1: value is a module id, require it\\\\n \\\\t// mode & 2: merge all properties of value into the ns\\\\n \\\\t// mode & 4: return value when already ns object\\\\n \\\\t// mode & 8|1: behave like require\\\\n \\\\t__webpack_require__.t = function(value, mode) {\\\\n \\\\t\\\\tif(mode & 1) value = __webpack_require__(value);\\\\n \\\\t\\\\tif(mode & 8) return value;\\\\n \\\\t\\\\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\\\\n \\\\t\\\\tvar ns = Object.create(null);\\\\n \\\\t\\\\t__webpack_require__.r(ns);\\\\n \\\\t\\\\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\\\\n \\\\t\\\\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\\\\n \\\\t\\\\treturn ns;\\\\n \\\\t};\\\\n\\\\n \\\\t// getDefaultExport function for compatibility with non-harmony modules\\\\n \\\\t__webpack_require__.n = function(module) {\\\\n \\\\t\\\\tvar getter = module && module.__esModule ?\\\\n \\\\t\\\\t\\\\tfunction getDefault() { return module['default']; } :\\\\n \\\\t\\\\t\\\\tfunction getModuleExports() { return module; };\\\\n \\\\t\\\\t__webpack_require__.d(getter, 'a', getter);\\\\n \\\\t\\\\treturn getter;\\\\n \\\\t};\\\\n\\\\n \\\\t// Object.prototype.hasOwnProperty.call\\\\n \\\\t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\\\\n\\\\n \\\\t// __webpack_public_path__\\\\n \\\\t__webpack_require__.p = \\\\\\"\\\\\\";\\\\n\\\\n\\\\n \\\\t// Load entry module and return exports\\\\n \\\\treturn __webpack_require__(__webpack_require__.s = 1);\\\\n\\",\\"// This const is used for nothing except to make this file identifiable via its content.\\\\n// We search for \\\\\\"_sentry_release_injection_file\\\\\\" in the plugin to determine for sure that the file we look at is the release injection file.\\\\n\\\\n// _sentry_release_injection_file\\\\n\\\\n var _global =\\\\n typeof window !== 'undefined' ?\\\\n window :\\\\n typeof global !== 'undefined' ?\\\\n global :\\\\n typeof self !== 'undefined' ?\\\\n self :\\\\n {};\\\\n\\\\n _global.SENTRY_RELEASE={id:\\\\\\"basic-upload-webpack4\\\\\\"};\\",\\"export const fibonacci = (n) => {\\\\n if (n === 3) {\\\\n throw new Error(\\\\\\"I'm an uncaught error\\\\\\");\\\\n }\\\\n if (n <= 1) {\\\\n return n;\\\\n }\\\\n return fibonacci(n - 1) + fibonacci(n - 2);\\\\n};\\\\n;\\\\nimport \\\\\\"/home/runner/work/sentry-javascript-bundler-plugins/sentry-javascript-bundler-plugins/packages/bundler-plugin-core/sentry-release-injection-file.js\\\\\\";\\",\\"import { fibonacci } from \\\\\\"./fib\\\\\\";\\\\nconsole.log(\\\\\\"Hi, I'm a very simple app\\\\\\");\\\\n\\\\nfibonacci(10);\\\\n\\\\nconsole.log(\\\\\\"I'm done\\\\\\");\\\\n;\\\\nimport \\\\\\"/home/runner/work/sentry-javascript-bundler-plugins/sentry-javascript-bundler-plugins/packages/bundler-plugin-core/sentry-release-injection-file.js\\\\\\";\\"],\\"names\\":[\\"installedModules\\",\\"__webpack_require__\\",\\"moduleId\\",\\"exports\\",\\"module\\",\\"i\\",\\"l\\",\\"modules\\",\\"call\\",\\"m\\",\\"c\\",\\"d\\",\\"name\\",\\"getter\\",\\"o\\",\\"Object\\",\\"defineProperty\\",\\"enumerable\\",\\"get\\",\\"r\\",\\"Symbol\\",\\"toStringTag\\",\\"value\\",\\"t\\",\\"mode\\",\\"__esModule\\",\\"ns\\",\\"create\\",\\"key\\",\\"bind\\",\\"n\\",\\"object\\",\\"property\\",\\"prototype\\",\\"hasOwnProperty\\",\\"p\\",\\"s\\",\\"window\\",\\"global\\",\\"self\\",\\"SENTRY_RELEASE\\",\\"id\\",\\"fibonacci\\",\\"Error\\",\\"console\\",\\"log\\"],\\"mappings\\":\\"6DACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,iBC5E7B,oBAAXC,OACLA,OACkB,oBAAXC,OACLA,OACgB,oBAATC,KACLA,KACA,IAEAC,eAAe,CAACC,GAAG,0B,yCCdxB,MAAMC,EAAaZ,IACxB,GAAU,IAANA,EACF,MAAM,IAAIa,MAAM,yBAElB,OAAIb,GAAK,EACAA,EAEFY,EAAUZ,EAAI,GAAKY,EAAUZ,EAAI,ICN1Cc,QAAQC,IAAI,6BAEZH,EAAU,IAEVE,QAAQC,IAAI\\"}", - "name": "~/index.js.map", - }, -] -`; - -exports[`Simple Sourcemaps Upload (one string include + default options) uploads the correct files using webpack5 1`] = ` +exports[`Simple Sourcemaps Upload (one string include + default options) > uploads the correct files using webpack 1`] = ` Array [ Object { "content": "(()=>{var e={677:(e,o,r)=>{(\\"undefined\\"!=typeof window?window:void 0!==r.g?r.g:\\"undefined\\"!=typeof self?self:{}).SENTRY_RELEASE={id:\\"basic-upload-webpack5\\"}}},o={};function r(t){var n=o[t];if(void 0!==n)return n.exports;var i=o[t]={exports:{}};return e[t](i,i.exports,r),i.exports}r.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),r.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})};var t={};(()=>{\\"use strict\\";r.r(t),r(677);const e=o=>{if(3===o)throw new Error(\\"I'm an uncaught error\\");return o<=1?o:e(o-1)+e(o-2)};console.log(\\"Hi, I'm a very simple app\\"),e(10),console.log(\\"I'm done\\")})();var n=exports;for(var i in t)n[i]=t[i];t.__esModule&&Object.defineProperty(n,\\"__esModule\\",{value:!0})})();